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"`