Apache не запускается на Vagrant
В моей среде Vagrant у меня есть гостевой Ubuntu Virtualbox с LAMP с настройками по умолчанию.
У меня есть исходный код на хост-машине в той же папке, что и мой Vagrantfile. Так что на гостевой Ubuntu я могу получить доступ к файлам в установленном каталоге /vagrant
, как это показано
/vagrant
/mysite
/index.php
/Vagrantfile
Теперь в моей конфигурации Apache я добавляю строку
Alias /mysite /vagrant/mysite
После перезагрузки конфигурации и перезапуска apache я могу перейти на localhost:8558/mysite/index.php
, и он работает.
Проблема заключается в том, что при перезагрузке Virtualbox с помощью vagrant reload
он запускает службу Apache до, устанавливая папку /vagrant
. Таким образом, Apache не может найти псевдонимы и не запускается. я должен запустить его вручную, тогда
Мой вопрос: есть ли способ отложить запуск Apache, чтобы он начинался после установки?
Обновление:. В качестве обходного пути я добавил script в crontab, который запускает apache через 30 секунд после загрузки, как описано здесь. Но мне интересно, есть ли лучшее решение.
Ответы
Ответ 1
Если установлена выскочка (как в Ubuntu), Vagrant испускает событие "бродячего монтирования". Для получения этой идеи см. https://serverfault.com/a/568033/179583. В script вы можете (повторно) запустить сервер Apache.
Кстати, у меня такое ощущение, что новые версии Apache просто предупреждают, но все равно запускаются, даже если корень doc не существует. То же самое с nginx.
Ответ 2
в то время как выскочка, вероятно, является допустимым вариантом, у меня было несколько вопросов, использующих ее с бродягой. Мне пришлось выполнить несколько задач, которые нужно было запустить как привилегированный пользователь, и мне не удалось работать с выскочкой.
Начиная с версии 1.6.0 (6 мая 2014 года), бродяга предоставляет возможность запускать определенное устройство обеспечения каждый раз, а также после загрузки приостановленной виртуальной машины с бродягой вверх.
В Vagrantfile
добавить:
# a file, eg after-boot.sh
config.vm.provision "shell", path: "after-boot.sh", run: "always"
# or just inline
config.vm.provision "shell", inline: "service apache2 restart", run: "always"
обратите внимание на run: "always"
, это заставит бродягу всегда запускать средство обеспечения, очевидно, оно работает точно так же, как и с любой другой системой обеспечения, такой как шеф-повар или марионетка.
Ответ 3
Я хотел бы добавить немного к ответу Zauberfisch (Apache не запускается на Vagrant)
Что должно было произойти, эта команда должна была запускаться как суперпользователь AKA 'Sudo', поэтому это была необходимая команда:
`config.vm.provision "shell", inline: "sudo service apache2 restart", run: "always"`
Причина, по которой это не сработало для вас без sudo
, похоже, заключается в том, что бродяга пытается запустить команду без /usr/sbin
в PATH
. Для меня это тоже сработало:
`config.vm.provision "shell", inline: "/usr/sbin/service apache2 restart", run: "always"`