Перезапуск apache сервера (apache restart)

Приветствую!

 

Сегодняшнее поговорим о том, как правильно перезапускать apache сервер

 

Иногда бывает нужно перезапустить веб сервер — скажем, если какой-то скрипт зациклился и съедает все процессорное время, или если нужно внести какие-то изменения в конфигурацию веб-сервера.

 

В случае с apache сервером есть несколько вариантов — правильные и не-правильные (но работающие :).

 

Начнем с правильных вариантов:

 

Команда 'apachectl start' запускает веб-сервер, если он в данный момент не запущен.

Команда 'apachectl stop' останавливает веб-сервер, если он в данный момент запущен.

Команда 'apachectl restart' перезапускает веб-сервер, если он в данный момент запущен. Если он не запущен — тогда она просто выдаст сообщение об ошибке и запустит его.

 

Все эти действия приводят к отключению всех клиентов, которые в данный момент пользуются сервером.

 

Если всего-лишь нужно считать новую конфигурацию — тогда достаточно команды 'apachectl graceful'.

 

Вроде все просто? А как просмотреть, есть ли работающие процессы apache в данный момент?

 

Можно запустить команду 'ps -ax' (в Linux — 'ps ax') и отфильтровать оттуда строчки, относящиеся к вебсерверу.

Окончательная команда получится 'ps -ax | grep httpd | grep -v grep'.

 

Если эта команда выдает вам какой-то результат — то у вас запущен apache.

 

Другой способ проверить, работает ли у вас apache — это просто присоединиться к нему с консоли. Для этого можно использовать команду telnet. Выглядеть сессия будет следующим образом:

 

@aldan ~> telnet localhost 80

Trying 127.0.0.1...

Connected to aldan.

Escape character is '^]'.

GET / HTTP/1.0

 

HTTP/1.1 200 OK

Date: Fri, 07 Nov 2008 22:44:25 GMT

Server: Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4 with Suhosin-Patch

Content-Length: 7634

Connection: close

Content-Type: text/html;charset=UTF-8

 

<html> ..... текст страницы </html>

 

Самое важное здесь — это команда 'telnet localhost 80', которая устанавливает соединение с вашим веб-сервером и строчка, которую вы должны ввести - 'GET / HTTP/1.0', которая вызывает загрузку основной странички. После ввода этого заголовка 2 раза нажмите Enter.

 

Другой правильный способ контролировать статус веб сервера

 

Самым правильным способом перезапуска веб сервера, все-таки, является .... как вы и догадались - использование скриптов запуска.

 

Поскольку в FreeBSD они лежат в /usr/local/etc/rc.d/, то и запускать их нужно оттуда-же.

 

Запуск сервера - /usr/local/etc/rc.d/httpd start

Остановка сервера - /usr/local/etc/rc.d/httpd stop

Перезапуск сервера - /usr/local/etc/rc.d/httpd restart

 

Только это все не будет работать, если у вас не прописана следующая строчка в /etc/rc.conf

 

httpd_enable=YES

 

Добавьте ее в /etc/rc.conf и после этого можете смело использовать скрипт запуска apache.

 

 

Нецивилизованный метод контроля apache

 

Если вам нужно остановить работу всего httpd сервера, то от имени пользователя root сделайте команду 'killall -9 httpd' — это напрочь убьет ВСЕ процессы веб-сервера. После этого поможет только его старт заново. Если при этом у вас клиенты что-то качали с сайта — то .... до свидания, клиенты — все будут отсоединены.

 

Пожалуй на сегодня все с перезапуском apache :)

 

Больше подробностей вы можете найти в моей книжке по настройке веб сервера - «Создай вебсервер своему чертенку»