Разные способы перезапустить Apache?

11

У меня тут вопрос по Apache.

За всю свою карьеру разработчика я перезапускал Apache следующим образом:

sudo /etc/init.d/apache2 restart

Я только сегодня развернул свое первое приложение на Rails, но у меня были проблемы с перезапуском Apache на хост-машине. Когда я попробовал это таким образом, Apache попытался бы перезагрузить компьютер, но в конечном итоге завис.

Это, однако, работало нормально:

sudo apachectl restart

Каковы различия между этими двумя методами? Я предположил, что последний в лучшем случае был «синтаксическим сахаром» для первого, но это не должно иметь место, учитывая, что последний работал, а первый - нет.

Если это уместно (и я подозреваю, что это может быть), это приложение Rails использует Phusion Passenger. Мой предыдущий опыт разработки (при котором предыдущий метод работает нормально) в основном с PHP. Я довольно новичок в Rails.

Рассматриваемый сервер работает под управлением Ubuntu 11.04 (Natty).

Крис Аллен Лейн
источник
1
Другая альтернатива - перезапуск службы apache2, хотя я не уверен, насколько это отличается от предыдущих 2, если вообще
Фил

Ответы:

6
sudo /etc/init.d/apache2 restart

Этот метод использует сценарии инициализации вашего дистрибутива Linux для перезапуска процесса. Эти скрипты запускаются во время загрузки для запуска apache.

sudo apachectl restart

Этот метод использует управляющую программу apachectl . Почти в каждом случае я бы рекомендовал использовать apachectl для манипуляции демоном apache. Вы имеете более детальный контроль над тем, как процесс перезапускается (см. Постепенный и перезапуск), опциями проверки конфигурации и способом получения информации о состоянии.

Основное различие между использованием сценариев init для перезапуска apache и apachectl заключается в том, что apachectl специально разработан для того, чтобы позволить администраторам контролировать apache, тогда как сценарии init разработаны как универсальный способ запуска процессов Unix после загрузки ядра и инициализации init.

РЕДАКТИРОВАТЬ: К сожалению, я не знаю, как решить вашу проблему с Rails или Phusion Passenger. Попробуйте просмотреть ваши журналы Apache для подсказок.


источник
2
Что, по вашему мнению, будет делать ваша ОС после перезагрузки и запуска вашего сервиса apache2? Использование apachectl отлично подходит для тестирования и разработки, но работа серверов, которые были, может вызвать проблемы. Вставить его в rc.local тоже не решение.
Кашани
Я должен упомянуть, что я отвечаю только на половину вопроса: разница между двумя способами перезапуска apache. К сожалению, я не знаю всех о Rails ... вроде скорочтения по этому поводу на моем первом обходе.
Спасибо за помощь. Это прояснило различия между ними для меня. Что касается вещей из Rails, я решил это до того, как опубликовал здесь. apachectl действительно работал как чемпион, а метод init.d - нет. Так что теперь я знаю! Благодарю.
Крис Аллен Лэйн