Назад | Перейти на главную страницу

Различные способы перезапуска Apache?

У меня здесь вопрос об Apache.

Всю свою карьеру разработчика я перезапускаю Apache вот так:

sudo /etc/init.d/apache2 restart

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

Однако это сработало нормально:

sudo apachectl restart

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

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

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

sudo /etc/init.d/apache2 restart

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

sudo apachectl restart

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

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

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