Я долгое время устанавливал Apache в рамках настройки среды разработки на своем ноутбуке.
Однако, так как я остановил его несколько месяцев назад, он больше не запускается автоматически при загрузке. У меня есть эта проблема на моем ноутбуке дома И на моем ноутбуке на работе.
В обоих случаях я установил Apache в Ubuntu 10.10 несколько месяцев назад, несколько недель использовал его без сбоев, но однажды я остановил его и теперь он больше не запускается автоматически. Я попытался запустить обновление rc для него вручную, но мне сказали, что сценарий инициализации уже используется.
Однако запуск / перезапуск вручную с помощью
sudo service apache2 start/restart
работает нормально. В обоих случаях я оставил это до обновления до 11.04, потому что надеялся, что это будет решено новой версией. Но это не так! Буду признателен, если кто-нибудь подскажет, как автоматически запустить Apache.
Я добавляю этот ответ, основываясь на недавних проблемах с теми же симптомами.
Сначала некоторые справочные данные:
/etc/init.d/
для запуска / остановки сервисов. /etc/init.d/
скрипты, которые хранятся в папках /etc/rc#.d/
, для запуска / остановки сервисов на основе «уровня запуска». /etc/rc1.d/
, уровень выполнения 2 использует /etc/rc2.d/
и т. Д. sudo update-rc.d apache2 defaults
, которая создает соответствующие символические ссылки в папках /etc/rc#.d/
. Так что кажется, что на моем сервере что-то или кто-то в какой-то момент выполнял sudo update-rc.d apache2 disable
, который удалил все символические ссылки «S» и заменил их символическими ссылками «K». Таким образом убивает или просто не запускает Apache при инициализации любого из уровней выполнения.
Моим решением было просто включить Apache:
sudo update-rc.d apache2 enable
Теперь Apache запускается / останавливается, как и ожидалось, при запуске или переключении уровней запуска.
NB:
Стоит отметить, что повторного запуска sudo update-rc.d apache2 defaults
недостаточно, потому что он видит, что существуют символические ссылки, и считает, что это то, что нужно. Он просто отвечает:
System start/stop links for /etc/init.d/apache2 already exist.
Если вы ищете (поискать в Google) эту проблему, проверьте, что если вы запустите:
chkconfig |grep httpd
, вы получите
httpd 0: off 1: off 2: on 3: на 4: на 5: на 6: выкл
blockquote>еще сделать:
chkconfig httpd on
(извините, для ubuntu эквивалент chkconfig - update-rc.d, см. Альтернатива Chkconfig для сервера Ubuntu? )
У меня была такая же проблема, и я запускаю Ubuntu 14 на локальной установке Vagrant. Я удалил каталог /etc/apache2/sites-enabled
и добавил ссылку на мой домашний каталог, который, конечно, смонтирован на моем локальном диске в соответствии с конфигурациями Vagrant.
Оказывается, apache не видел каталог, потому что ресурс еще не был смонтирован. Я переписал свое положение на Vagrant, чтобы просто скопировать каталог sites-enabled
вместо добавления символической ссылки.
Я также сделал sudo update-rc.d apache2 enable
в соответствии с предложением Karl Wilbur
, чтобы убедиться, что apache init был включен.
В этом случае я узнал, почему Apache не запускается. Я не смог найти следов этого в журналах запуска, только в выводе, напечатанном на экране при загрузке.
Но вот, пожалуйста: последняя строка в скрипте /etc/apache2/apache2.conf
не удалась.
Почему?
Там написано:
Include sites-enabled/
Однако два сайта, которые я настроил, находятся в моем собственном домашнем каталоге - который зашифрованы!
Итак, при загрузке (во время запуска Apache) эти сайты не существуют, и Apache не работает и отказывается работать.
Решение?
Я создал небольшой скрипт под названием «disable_sites» и поместил его в /etc/rc0.d
и /etc/rc6.d
(выключение и перезагрузка):
#!/bin/bash
/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload
exit 0
Я также создал скрипт для повторного включения сайтов при каждом входе в систему и добавил его в качестве запускаемой программы в «Системных настройках». Итак, теперь это работает!
Итак, я предполагаю, что урок здесь заключается в том, что когда Apache необъяснимым образом не удается загрузить во время загрузки, и вы не можете найти никаких ошибок в журналах или при запуске сервера вручную, проверьте, все ли необходимые каталоги доступны. Это, вероятно, также может быть решено другим способом.
Попробуйте запустить
update-rc.d apache2 enable [list of run levels]
как root.
Возможно, вам будет интересно почитать
man update-rc.d