Я долгое время устанавливал 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:
Теперь Apache запускается / останавливается, как и ожидалось, при запуске или переключении уровней запуска.
NB:
Стоит отметить, что просто запустить
sudo update-rc.d apache2 defaults
снова недостаточно, потому что он видит, что символические ссылки существуют, и считает, что это то, что нужно. Он просто отвечает:источник
sudo update-rc.d apache2 enable defaults
он удаляет то, что у меня есть, а затем возвращает его обратно. Я имеюK09apache2
в rc0, 1 и 6, и я имеюS91apache2
в rc2, rc3, rc4, rc5.service apache2 start
работает нормально, но я должен делать это после каждого перезапуска, так как он не запускается автоматически. mysql, с другой стороны, всегда запускается нормально./var/log/syslog
и/var/log/apache2/error.log
. Напишите мне со ссылкой на вопрос, и я посмотрю, смогу ли я помочь.В этом случае я узнал, почему Apache не запускается. Я не смог найти следов этого в журналах запуска, только в выводе, напечатанном на экране при загрузке.
Но вот, пожалуйста: последняя строка в скрипте
/etc/apache2/apache2.conf
не удалась.Почему?
Это говорит:
Include sites-enabled/
Однако два сайта, которые я настроил, находятся в моем собственном домашнем каталоге, который зашифрован!
Таким образом, при загрузке (во время запуска Apache) эти сайты не существуют, и Apache не работает и отказывается работать.
Решение?
Я создал небольшой скрипт под названием «disable_sites» и слинкован его в
/etc/rc0.d
и/etc/rc6.d
(отключения и перезагрузки):Я также создал скрипт для повторного включения сайтов при каждом входе в систему и добавил его в качестве запускаемой программы в своих Системных настройках. Так что теперь это работает!
Итак, я полагаю, что урок здесь заключается в том, что когда Apache по необъяснимым причинам не удается загрузить во время загрузки, и вы не можете найти никаких ошибок в журналах или при запуске сервера вручную, проверьте, все ли необходимые каталоги доступны. Возможно, это можно решить и другим способом.
источник
apachectl configtest
уведомил бы вас об отсутствии разрешений на доступ к файлам при работе в качестве демона.Если вы ищете (погуглите) эту проблему, проверьте, что если вы запустите:
Вы получаете
еще сделать:
(извините на ubuntu chkconfig эквивалентен update- rc.d, см. альтернативу Chkconfig для Ubuntu Server? )
источник
У меня была такая же проблема, и я запускаю Ubuntu 14 на локальной установке Vagrant. Я удалил
/etc/apache2/sites-enabled
каталог и добавил ссылку на мой домашний каталог, который, конечно, смонтирован на моем локальном диске в соответствии с конфигами Vagrant.Оказывается, apache не видел каталог, потому что ресурс еще не был подключен. Я переписал свое положение на Vagrant, чтобы просто скопировать
sites-enabled
каталог вместо добавления символической ссылки.Я также сделал,
sudo update-rc.d apache2 enable
как было предложено,Karl Wilbur
чтобы убедиться, что apache init был включен.источник