Сервер Apache не запускается автоматически

Я долгое время устанавливал Apache в рамках настройки среды разработки на своем ноутбуке.

Однако, так как я остановил его несколько месяцев назад, он больше не запускается автоматически при загрузке. У меня есть эта проблема на моем ноутбуке дома И на моем ноутбуке на работе.

В обоих случаях я установил Apache в Ubuntu 10.10 несколько месяцев назад, несколько недель использовал его без сбоев, но однажды я остановил его и теперь он больше не запускается автоматически. Я попытался запустить обновление rc для него вручную, но мне сказали, что сценарий инициализации уже используется.

Однако запуск / перезапуск вручную с помощью

sudo service apache2 start/restart

работает нормально. В обоих случаях я оставил это до обновления до 11.04, потому что надеялся, что это будет решено новой версией. Но это не так! Буду признателен, если кто-нибудь подскажет, как автоматически запустить Apache.

11
задан 12 May 2011 в 12:02

5 ответов

Я добавляю этот ответ, основываясь на недавних проблемах с теми же симптомами.

Сначала некоторые справочные данные:

  • Ubuntu использует скрипты в папке /etc/init.d/ для запуска / остановки сервисов.
  • Ubuntu использует символические ссылки на те /etc/init.d/ скрипты, которые хранятся в папках /etc/rc#.d/, для запуска / остановки сервисов на основе «уровня запуска».
  • Символические ссылки, начинающиеся с буквы «S», указывают, что служба должна быть запущена.
  • Символические ссылки, начинающиеся с «K», указывают, что служба должна быть остановлена ​​(убита).
  • Уровень выполнения 1 выполняет сценарии, обозначенные символической ссылкой в ​​/etc/rc1.d/, уровень выполнения 2 использует /etc/rc2.d/ и т. Д.
  • Уровень запуска по умолчанию для Ubuntu равен 2.
  • При установке Apache запускается 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.
0
ответ дан 12 May 2011 в 12:02

Если вы ищете (поискать в Google) эту проблему, проверьте, что если вы запустите:

chkconfig |grep httpd

, вы получите

httpd 0: off 1: off 2: on 3: на 4: на 5: на 6: выкл

еще сделать:

chkconfig httpd on

(извините, для ubuntu эквивалент chkconfig - update-rc.d, см. Альтернатива Chkconfig для сервера Ubuntu? )

0
ответ дан 12 May 2011 в 12:02

У меня была такая же проблема, и я запускаю Ubuntu 14 на локальной установке Vagrant. Я удалил каталог /etc/apache2/sites-enabled и добавил ссылку на мой домашний каталог, который, конечно, смонтирован на моем локальном диске в соответствии с конфигурациями Vagrant.

Оказывается, apache не видел каталог, потому что ресурс еще не был смонтирован. Я переписал свое положение на Vagrant, чтобы просто скопировать каталог sites-enabled вместо добавления символической ссылки.

Я также сделал sudo update-rc.d apache2 enable в соответствии с предложением Karl Wilbur, чтобы убедиться, что apache init был включен.

0
ответ дан 12 May 2011 в 12:02

В этом случае я узнал, почему 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 необъяснимым образом не удается загрузить во время загрузки, и вы не можете найти никаких ошибок в журналах или при запуске сервера вручную, проверьте, все ли необходимые каталоги доступны. Это, вероятно, также может быть решено другим способом.

0
ответ дан 12 May 2011 в 12:02

Попробуйте запустить

update-rc.d apache2 enable [list of run levels]

как root.

Возможно, вам будет интересно почитать

man update-rc.d
0
ответ дан 12 May 2011 в 12:02

Другие вопросы по тегам:

Похожие вопросы: