Просмотрев содержимое конфигурационного файла httpd.conf
, вы найдете в нем ссылки на модули, формируемые посредством директивы LoadModule
. Пример подобной ссылки приведен ниже.
LoadModule mime_module lib/apache/mod_mime.so
В качестве значения данной директивы задается внутреннее имя модуля (в данном примере mime_module
) и имя файла, в котором содержится сам модуль ( lib/apache/mod_mime.so
). В данном случае имя файла указывается относительно каталога, заданного посредством директивы ServerRoot
, но при желании вы можете указать полный путь.
Модули, которые используются часто, можно непосредственно встраивать в двоичные файлы Apache. Чтобы определить, какие модули уже содержатся в исполняемых файлах, надо задать команду httpd -l
(или apache -l
). В некоторых случаях модули, встроенные в состав Apache или загруженные посредством LoadModule
, необходимо активизировать, включив для этого в конфигурационный файл директиву AddModule
.
AddModule mod_mime.с
В качестве значения директивы AddModule
задается имя файла с исходным кодом модуля. Для важных модулей в конфигурационном файле Apache содержится как директива LoadModule
, так и директива AddModule
.
Как правило, администраторам не приходится включать новые модули; стандартная конфигурация Apache позволяет решать большинство задач, связанных с организацией функционирования Web-узла. Более того, чтобы уменьшить риск незаконного проникновения в систему, иногда приходится исключать некоторые модули. Удаляя модули, следует соблюдать осторожность, так как, не зная структуры Apache, нельзя заранее сказать, как отсутствие некоторых из них повлияет на работоспособность сервера.
Если Apache не может выполнить необходимые вам действия, следует прочитать описания модулей и решить, какой из них пригоден для решения этой задачи. Дополнительную информацию о доступных модулях можно получить на Web-узле Apache Module Register по адресу http://modules.apache.org
. Выполнив поиск по ключевым словам, вы получите информацию о модулях, созданных сторонними организациями, и адреса Web-узлов этих организаций.
В системах, подобных UNIX, и, в частности, в Linux, можно выделить два типа процессов: процессы ядра (kernel space processes) и пользовательские процессы (user space processes). Процесс ядра запускается очень быстро, а для запуска пользовательского процесса требуется относительно много времени, кроме того, пользовательский процесс часто должен осуществлять обмен важными данными с ядром. На практике такая особенность пользовательских процессов приводит к возникновению проблем, так как основная обработка информации осуществляется в пространстве пользовательского процесса. Задержка, связанная с запуском процесса, оправдывается повышением уровня безопасности и стабильности. Процессы ядра пользуются привилегиями при взаимодействии с аппаратными средствами, файловой системой и другими ресурсами, поэтому ошибка в программе или несанкционированное вмешательство извне могут привести к разрушению системы.
Пытаясь найти способы увеличения производительности, специалисты заметили, что, несмотря на то, что Web-сервер представляет собой пользовательский процесс, большая часть его функций выполняется процессами ядра, в результате работа сервера в основном представляет собой последовательность обращений к ядру. На рис. 20.1 условно показано взаимодействие Web-сервера (в качестве примера которого выбран сервер Apache) с ядром. Реально обмен с ядром происходит гораздо сложнее, чем показано на рисунке, например, для чтения файла и передачи данных по сети необходимо выполнить целый ряд операций. При этом расходуется время процессора, память и другие ресурсы.
Рис. 20.1. Web-сервер, выполняющийся как пользовательский процесс, интенсивно взаимодействует с ядром
Для того чтобы оптимизировать обслуживание HTTP-запросов, были созданы простые Web-серверы, выполняющиеся как процессы ядра. В результате исчезла необходимость постоянного взаимодействия ядра и пользовательского процесса, и скорость обработки запросов клиента существенно увеличилась. Начиная с версии 2.4.x в состав ядра входят компоненты, реализующие Web-сервер kHTTPd. Подробная информация о таких компонентах находится по адресу http://www.fenrus.demon.nl
. Настройка сервера, выполняющегося в виде пользовательского процесса, осуществляется путем записи данных в конфигурационные файлы, находящиеся в каталоге /proc/sys/net/khttpd
. Для того чтобы обеспечить работу такого сервера, необходимо предпринять следующие действия.
Читать дальше