У меня тут вопрос по Apache.
За всю свою карьеру разработчика я перезапускал Apache следующим образом:
sudo /etc/init.d/apache2 restart
Я только сегодня развернул свое первое приложение на Rails, но у меня были проблемы с перезапуском Apache на хост-машине. Когда я попробовал это таким образом, Apache попытался бы перезагрузить компьютер, но в конечном итоге завис.
Это, однако, работало нормально:
sudo apachectl restart
Каковы различия между этими двумя методами? Я предположил, что последний в лучшем случае был «синтаксическим сахаром» для первого, но это не должно иметь место, учитывая, что последний работал, а первый - нет.
Если это уместно (и я подозреваю, что это может быть), это приложение Rails использует Phusion Passenger. Мой предыдущий опыт разработки (при котором предыдущий метод работает нормально) в основном с PHP. Я довольно новичок в Rails.
Рассматриваемый сервер работает под управлением Ubuntu 11.04 (Natty).
источник
Ответы:
Этот метод использует сценарии инициализации вашего дистрибутива Linux для перезапуска процесса. Эти скрипты запускаются во время загрузки для запуска apache.
Этот метод использует управляющую программу apachectl . Почти в каждом случае я бы рекомендовал использовать apachectl для манипуляции демоном apache. Вы имеете более детальный контроль над тем, как процесс перезапускается (см. Постепенный и перезапуск), опциями проверки конфигурации и способом получения информации о состоянии.
Основное различие между использованием сценариев init для перезапуска apache и apachectl заключается в том, что apachectl специально разработан для того, чтобы позволить администраторам контролировать apache, тогда как сценарии init разработаны как универсальный способ запуска процессов Unix после загрузки ядра и инициализации init.
РЕДАКТИРОВАТЬ: К сожалению, я не знаю, как решить вашу проблему с Rails или Phusion Passenger. Попробуйте просмотреть ваши журналы Apache для подсказок.
источник