Организация Web-доступа в среде zLinux на сервере z9 BC

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

elp|configtest}"1$RETVAL

Затем скопируем этот скрипт в директорию /etc/init.d/ и дадим ему права на выполнение. После выполним команды, обеспечивающие запуск сервера вместе с системой:-add httpd-level 2345 httpd on

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

 

2.2.4 Остановка и перезапуск web-сервера Apache

Для того чтобы остановить или перезапустить Apache, необходимо послать сигнал запущенным процессам httpd. Существует два способа отправить подобные сигналы. Во-первых, можно послать сигналы непосредственно процессам, используя команду kill. Стоит помнить, что процессов httpd в системе выполняется несколько, однако не следует отсылать сигналы ни одному из них, кроме родительского - его pid (идентификатор процесса) записывается в файл, путь к которому задается директивой PidFile.

Существуют три сигнала, которые можно отправить родительскому процессу: TERM, HUP, и USR1 - их значение будет объяснено ниже.

Чтобы отправить сигнал родительскому процессу, следует набрать следующую команду:-TERM `cat /opt/apache2/logs/httpd.pid`

Второй способ передать сигналы процессам httpd - это использование опции -k в командной строке с аргументами: stop, restart и graceful, как будет описано ниже. Это параметры командной строки для исполняемого файла httpd, однако рекомендуется передавать их, используя скрипт apachectl, который более корректно передаст эти параметры программе httpd.

После того, как будут отправлены сигналы процессу httpd, можно узнать состояние сервера, набрав:-f /usr/local/apache2/logs/error_log

Немедленная остановка

Сигнал: TERM-k stop

После получения сигнала TERM или stop, родительский процесс пытается немедленно уничтожить все дочерние процессы. Это может занять несколько секунд. Затем родительский процесс сам завершает работу, при этом все текущие запросы прекращают обрабатываться, а новые запросы игнорируются.

Немедленный перезапуск

Сигнал: HUP-k restart

Отправленный родительскому процессу сигнал HUP или restart вызывает немедленное уничтожение всех дочерних процессов, также как и при обработке сигнала TERM, однако родительский процесс не завершает работу. Он перечитывает конфигурационные файлы и открывает заново log-файлы. Затем он порождает новых потомков и продолжает обработку запросов. Статистика сервера при получении сигнала HUP полностью обнуляется. Если Ваш конфигурационный файл содержит ошибки, то попытка перезапустить сервер вызовет немедленное прекращение его работы с сообщением об ошибке.

Мягкий перезапуск

Сигнал: USR1-k graceful

При получении сигнала USR1 или graceful, родительский процесс призывает дочерние процессы к завершению работы сразу же после обработки своего текущего запроса (или к незамедлительной остановке, если дочерний процесс ничего не обрабатывает). Родительский процесс перечитывает конфигурационные файлы, открывает заново log-файлы. После того, как какой-то из дочерних процессов завершает работу, родительский процесс заменяет его дочерним процессом нового поколения, т.е. с новой конфигурацией, который начинает обрабатывать новые запросы незамедлительно.

На некоторых платформах, не поддерживающих передачу сигнала USR1 как сигнала для инициации мягкого перезапуска, могут использоваться другие сигналы (такие как WINCH). Команда apachectl graceful отправит корректный сигнал на любой платформе.

Программа разработана таким образом, что количество процессов и потоков, определённое директивами MPM-модуля, оставалось неизменным на протяжении всего процесса перезапуска. Кроме того, для поддержания числа запущенных процессов, определённого директивой StartServers, используется следующий способ:

если спустя одну секунду не было создано по крайней мере такое количество дочерних процессов, какое определено директивой StartServers, тогда создаётся такое количество дочерних процессов, которое полностью восполнило бы недостаток.

Таким образом, сервер пытается одновременно и сохранить количество уже существующих дочерних процессов неизменным, и учесть требования, указанные в директиве StartServers.

Статистика сервера при получении сигнала USR1 не обнуляется. Так было сделано для того, чтобы уменьшить промежуток времени, в течение которого сервер не может обрабатывать новые запросы (которые операционная система будет ставить в очередь, т.е. они не пропадут в любом случае), а также для того, чтобы учитывать измененные настройки. Для этого сервер хранит таблицу статистики, в которую записываются результаты работы всех дочерних процессов, вне зависимости от их поколения. Модуль mod_status также использует символ G, чтобы обозначить те дочерние процессы, которые всё ещё обрабатывают запросы и которые были созданы до сигнала к мягкому перезапуску.

В настоящее время нет способа определить, что все дочерние процессы закончили запись в старый log-файл (т.е. log-файл, в который производилась запись до перезапуска). Рекомендуется подождать некоторое время, после того как будет послан сигнал USR1, прежде чем делать что-либо со старым log-файлом. Например, если на выполнение запросов пользователей, подключённых через очень медленный канал, уходит не более 10 минут, тогда логично будет подождать 15 минут, прежде чем делать что-либо со старым log-файлом.

Если конфигурационный файл содержит ошибки, то попытка перезапустить сервер вызовет немедленное прекращение работы родительского процесса с сообщением об ошибке. В случае мягкого перезапуска дочерние процессы продолжают обрабатывать свои запросы, после чего они завершат свою работу. Это может вызват?/p>