# chmod 511 /usr/sbin/httpd
Далее, не нужно, чтобы посторонние глаза смогли посмотреть, а руки — изменить (и выполнить) файлы, находящиеся в каталогах /etc/httpd/conf
и /var/log/httpd
:
# chmod 700 /etc/httpd/conf/
# chmod 700 /var/log/httpd /
16.14. Сервер kHTTPd — веб-сервер уровня ядра
В операционной системе все процессы можно разделить на два типа: процессы уровня ядра и пользовательские процессы. Процесс уровня ядра запускается и работает очень быстро по сравнению с относительно неповоротливым пользовательским процессом. Однако пользовательские процессы безопаснее для здоровья системы, нежели процессы уровня ядра. Если произойдет ошибка в пользовательском процессе, то на работе системы это обстоятельство никак не отразится. А ошибка в процессе уровня ядра чревата «крахом» системы, который вам обойдется во много раз дороже, чем выигрыш на быстродействии процесса уровня ядра.
Процессы уровня ядра позволяют существенно повысить производительность веб-сервера, то есть скорость обработки HTTP-запросов. Начиная с версии ядра 2.4, в состав ядра входит веб-сервер kHTTPd. Скорость его работы значительно выше скорости веб-сервера Apache, который выполняется как пользовательский процесс.
16.14.1. Настройка kHTTPd
Так как kHTTPdявляется процессом уровня ядра, его настройка выполняется путем записи информации в файлы, хранящиеся в каталоге /proc/sys/net/khttpd
.
Сначала нужно перекомпилировать ядро (этому процессу посвящена отдельная глава), включив в его состав kHTTPd. Для этого включите опцию Kernel HTTPd Accelerationв меню Network Options.
После этого нужно настроить веб-сервер Apache для работы по порту 8080 (директива Portв файле httpd.conf
) и перезапустить его:
# service httpd restart
Загрузите модуль ядра khttpd:
# insmod khttpd
Укажите серверу kHTTPd, что запросы клиентов нужно обрабатывать через порт 80, а те запросы, с которыми он не может справиться, передавать Apache:
# echo 80 > /proc/sys/net/khttpd/serverport
# echo 8080 > /proc/sys/net/clientport
Какие запросы не может обработать kHTTPd? Ему «не по зубам» запросы, предполагающие запуск сценария. Все такие запросы будут перенаправлены Apache. Поэтому, если ваш веб-сервер предполагает в основном запуск CGI-сценариев (в том числе и PHP-сценариев), использовать kHTTPdнецелесообразно. Вместо повышения производительности вы добьетесь обратного.
Сообщите серверу kHTTPd, где нужно искать веб-страницы (в том же каталоге, который указан в директиве DocumentRootсервера Apache):
# echo /var/www/html > /proc/sys/net/khttpd/documentroot
Если на вашем сервере установлен PHP, укажите каталог, в котором хранятся PHP-сценарии:
# echo /var/www/html/scripts > /proc/sys/net/khttpd/dynamic
Для запуска kHTTPdвведите следующую команду:
# echo 1 > /proc/sys/net/khttpd/start
Всю эту работу можно автоматизировать, написав сценарий khttpd-start (листинг 16.16):
Листинг 12.16. Сценарий автоматического запуска kHTTPd
#!/bin/bash
# Загружаем модуль kHTTPd insmod khttpd
# Указываем порт kHTTPd
echo 80 > /proc/sys/net/khttpd/serverport
# Указываем порт Apache
echo 8080 > /proc/sys/net/clientport
# Корневой каталог веб-сервера и каталог
# для хранения сценариев
echo /var/www/html > /proc/sys/net/khttpd/documentroot
echo /var/www/html/scripts > /proc/sys/net/khttpd/dynamic
# Запускаем kHTTPd
echo 1 > /proc/sys/net/khttpd/start
Так как kHTTPd— это процесс уровня ядра, к тому же экспериментальный, его использование может отрицательно повлиять на надежность работы системы. Помните, что сервер kHTTPdне может обеспечить такой же уровень надежности, как Apache. kHTTPdследует применять только в том случае, если Apacheне справляется с нагрузкой и на веб-сервере не часто запускаются CGI-сценарии.
Глава 17
Установка и настройка MySQL. Связка Apache + PHP + MySQL
Ни один серьезный интернет-проект нельзя построить без использования баз данных. Большинство провайдеров предоставляет хостинг вместе с одним из серверов баз данных. Самым популярным из таких серверов считается MySQL, получивший широкое распространение благодаря своей простоте. Здесь я не буду ни рассматривать технические характеристики MySQL, ни сравнивать его с другими серверами баз данных (InterBase Server, IBM DB/2, Oracle) — достаточно сказать, что InterBase Server или Oracle более масштабируемы и поэтому лучше подходят для организации распределенной системы обработки информации, но для обычного интернет-проекта MySQLподходит практически идеально. В этой главе я опишу его установку, настройку и использование.
Читать дальше
Конец ознакомительного отрывка
Купить книгу