- •Принципы работы арасне
- •Директивы сервера
- •Блочные директивы
- •Запуск нескольких экземпляров Apache
- •Виртуальные хосты
- •Управление виртуальными хостами
- •Перезапуск Apache
- •Использование файлов .Htaccess
- •Общий шлюзовый интерфейс (cgi)
- •Установка переменных среды
- •Браузеры
- •Обработчики
- •Аутентификация
- •Команды allow и deny
- •Выбор языка
- •Поддержка русскоязычных кодировок,
- •Переадресация
- •Сенсорные изображения
- •Кэширование
- •Var Значение этого атрибута — имя переменной.
Управление виртуальными хостами
При запуске демона httpd, Apache запускает несколько незадействованных порожденных версий самого себя, чтобы любой входящий запрос мгновенно обрабатывался. Схема прекрасная, но нужен какой-то способ управления образовавшимся неуклюжим скопищем программ. Для применяются следующие директивы:
MaxClients <число (по умолчанию 150)>
Данная директива ограничивает число запросов, которые могут обрабатываться одновременно. Фактически это означает ограничение количества серверов, которые могут работать одновременно.
MaxRequestsPerChild <число (по умолчанию 30) >
Каждая порожденная версия Apache обрабатывает указанное число запросов и завершает свое вышолнение (если число не равно нулю, если заданное нулевое значение, каждая порожденная версия Apache существует вечно до перезагрузки машины). Указанием ненулевого значения ликвидируются случайные потери блоков памяти в Apache. Хотя в Apache потерь блоков памяти нет, они случаются в системных библиотеках, поэтому лучше не отключать эту директиву.
MaxSpareServers <число (по умолчанию 10)>
В запущенном, но не задействованном состоянии будет находиться не более указанного числа порожденных серверов. Не следует задавать в данной директиве слишком большое число, потому что это приведет к излишнему расходованию ресурсов.
MinspareServers <число (по умолчанию 5)>
Apache пытается держать в работающем состоянии минимум указанное число резервных серверов. Если таких серверов меньше, чем указано в директиве, запускаются новые (со скоростью один в секунду). Не следует задавать в данной директиве необоснованно большое число, потому что это приведет к излишнему расходованию ресурсов.
StartServers <число (по умолчанию 5)> С помощью этой директивы устанавливается число серверов, которые запускаются Apache при старте. Поскольку новые серверы запускаются только по одному в секунду, то в сильно загруженных системах выбор этих параметров должен предваряться тщательным анализом. Чтобы справляться с внезапными всплесками трафика, целесообразно иметь несколько резервных серверов. Серверы, обрабатывающие по миллиону обращений за день, хорошо работают при значениях MaxSpareServers=64 и MinSpareServers=32. Начальную производительность можно оптимизировать путем установки значения StartServers в диапазоне где-то между MaxSpareServers и MinSpareServers. Возможно, стоит также увеличить значение MaxRequestsPerChild, чтобы избежать лишних дополнительных затрат на перезапуски процессов.
Перезапуск Apache
В процессе работы Web-мастер часто уничтожает Apache и перезапускает Apache с новым файлом конфигурации, чтобы добавить или удалить виртуальный хост. Это можно сделать грубо, остановив httpd демон и перезапустив его. При этом все текущие операции прерываются, что очень раздражает и расстраивает пользователей. Apache позволяет перезапускать главный сервер, не отсекая внезапно все работающие порожденные процессы. Перезапуск Apache можно выполнить одним из трех способов:
-
Уничтожить и перезагрузить Apache, который затем перечитывает все свои файлы конфигурации и перезапускается.
#killPID
# httpd [флаги]
-
Тот же эффект достигается с помощью флага -1 в команде kill
#kill -1 PID
-
Плавный перезапуск осуществляется с флагом -16. Это позволяет порожденным процессам доработать до конца и завершить все текущие клиентские операции. Затем перечитываются файлы конфигурации и перезапускается главный процесс.
#kill-16PID
Можно сделать так, чтобы Apache вообще не порождал тьму ожидающих порожденных процессов, а запускал новый процесс каждый раз при поступлении запроса и завершал его после обработки. Конечно, при такой схеме работа осуществляется медленнее, но при этом потребляется меньше ресурсов в отсутствие клиентских запросов. Для этого используется директива:
ServerType [standalone\inetd]
Standalone
Используется по умолчанию. Разрешает создавать стаю ожидающих порожденных процессов
Inetd
Создает и уничтожает порожденные процессы по одному. Утилита inetd конфигурируется файлом /etc/inetd.conf.
