Шрифт:
Интервал:
Закладка:
# tar xvzf apache_l.3.3rusPL27.3.tar.gz
# cd apache_1.3.3rusPL27.3
# ./configure
# make
# make install
Настройка Russian Apache не отличается от настройки оригинального Apache за исключением настройки модуля перекодирования.
16.12.2. Настройка перекодировки русскоязычных документов
Директивы перекодирования (они находятся в файле httpd.conf) можно разделить на три группы.
Первые указывают, в какой кодировке хранятся файлы на диске. Их можно включать в блок Location или в файлы .htaccess:
# все файлы, кроме .txt, хранятся в кодировке koi8-r
CharsetSourceEnc koi8-r
# все файлы .txt хранятся в кодировке windows-1251
CharsetByExtension windows-1251 .txt
Вторые определяют названия (CharsetDecl) и псевдонимы (CharsetAlias) кодировок и таблиц символов (CharsetRecodeTable и CharsetWideRecodeTable). Они находятся в блоке <IfModule mod_charset.c> … </IfModule> и не требуют изменений. Название языка (ru) должно быть определено в директивах AddLanguage и LanguagePriority.
CharsetDecl windows-1251 ru
CharsetAlias windows-1251 win x-cp1251 cp1251 cp-1251
С помощью третьей, самой многочисленной, группы вы можете настроить сервер для автоматической перекодировки символов на основании информации о клиенте. Например, определив, что клиент работает в операционной системе Windows и кодировкой браузера по умолчанию является Windows-1251, сервер самостоятельно перекодирует файлы в нужную кодировку. Если сервер сделает выбор неправильно, пользователь всегда сможет сам изменить кодировку вручную.
Существует три способа выбора кодировки:
♦ по каталогу:
http://www.server.ru/koi/file.html
http://www.server.ru/win/file.html
♦ по имени сервера:
http://koi.www.server.ru/file.html
http://win.www.server.ru/file.html
♦ по порту:
http://www.server.ru:8000/file.html
http://www.server.ru:8001/file.html
Для перекодирования по каталогу (точнее, по его префиксу) нужно добавить в блоке VirtualHost псевдоним, например:
Alias /koi /www/docs
Или же просто создать в нужном каталоге ссылку на самого себя:
# cd /www/docs
# ln -s . koi
Несмотря на свою простоту, этот способ имеет множество недостатков. Если у вас небольшой сервер, вы можете использовать перекодировку по каталогу. В другом случае лучше используйте перекодировку по имени сервера или по порту.
При использовании перекодировки по имени сервера следует обратить внимание на то, чтобы указанный вами сервер был прописан на сервере DNS. После регистрации поддомена (в качестве имени которого нужно использовать один из псевдонимов кодировки, указанный с помощью директивы CharsetAlias, например, koi или win) внесите следующие строки в ваш файл httpd.conf:
# Естественно, укажите здесь свой IP-адрес
<VirtualHost 111.111.111.1>
ServerName www.server.ru
ServerAlias *.www.server.ru
# далее следует обычная конфигурация
# ...
</VirtualHost>
Если сервер DNS администрируете не вы и возможности прописать новый поддомен у вас нет, то используйте перекодировку по порту. Для этого закомментируйте директиву Port в файле httpd.conf и вместо нее добавьте следующие директивы:
Listen 80
Listen 8000
Listen 8001
Listen 8002
Listen 8003
CharsetByPort koi8-r 8000
CharsetByPort windows-1251 8001
CharsetByPort ibm866 8002
CharsetByPort iso-8859-5 8003
Номера портов при этом не очень важны. Правда, есть одна неприятность: если сеть клиента защищена брандмауэром, не позволяющим обращаться к выбранному вами порту, клиент не сможет установить соединение с вашим сервером.
Схема (порядок) выбора кодировки определяется директивой CharsetSelectionOrder:
♦ CharsetSelectionOrder Dirprefix Useragent Portnumber Hostname UriHostname — для выбора по каталогу;
♦ CharsetSelectionOrder Hostname UriHostname Useragent Portnumber Dirprefix — для выбора по имени домена;
♦ CharsetSelectionOrder Portnumber Useragent Hostname UriHostname Dirprefix — для выбора по порту.
16.13. Защита сервера Apache
По окончании настройки сервера запретим изменение и удаление файла конфигурации:
[[email protected]]# chattr +i /etc/httpd/conf/httpd.conf
После этого вы (и никто другой) не сможете изменить этот файл даже с помощью конфигуратора.
Желательно также установить права 511 для исполняемого файла сервера httpd:
# 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 подходит практически идеально. В этой главе я опишу его установку, настройку и использование.
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение