Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 73
Текст из файла (страница 73)
0 . 0 . 1 : 8 2 0 0 /</IfDefine># Файл, в котором находятся директивы конфигурирования# виртуальных узлов.Include conf/vhosts/Vhosts.conf•#t####tДля поддержки динамических виртуальных хостов и виртуальныхдомашних каталогов, раскомментируйте следующие строки:LoadModule vhost_alias_modulemodules/mod_vhost_alias. soAddModule mod_vhost_alias.cInclude conf/vhosts/DynamicVhosts.confInclude conf/vhosts/VirtualHomePages.conf# Директивы конфигурирования PHPInclude conf/addon-modules/php.conf12.7.
Перекодирование русскоязычных документов «на лету»С тех пор, когда в русском языке появилось слово кодировка, появиласьи проблема перекодировки. Стандартной кодировкой русского языка длябольшинства Unix-серверов является КОИ-8. Аббревиатура КОИ расшифровывается как «Код для Обмена Информацией».
Все бы было хорошо, еслибы существовала одна-единственная кодировка KOIS-г. Но, как всегда,найдутся добрые люди, которые захотят помочь нам кодировать наш русский язык. И таких нашлось немало. Например, всем известная Microsoftсначала использовала кодировку СР-866 (еще известную как альтернативнаякодировка — ALT) в своей операционной системе DOS. ОС DOS тогда былаустановлена на большинстве домашних и офисных компьютеров, поэтомуособой разницы, что использовать: KOIS-r или СР-866, для пользователейне было по одной простой причине: у меня отображается так же, как и усоседа. Потом та же Microsoft разработала кодировку Windows-1251 (ANSI)для своей новой операционной системы Windows.
Стараясь нам «помочь»,она создала проблемы с перекодировкой уже на локальном уровне: файлы,созданные в ОС DOS, без предварительного перекодирования нельзя былопрочитать в Windows, и наоборот. Заметьте, об Интернет и Apache я еще несказал ни слова.311Сервер ApacheКроме Microsoft, «облегчили» нам жизнь также компании Apple и Sun,разработав соответственно кодировки Apple и ISO8859-5. Компания IBMтакже не отстала от них, разработав собственную кодировку русского языка.В общем, развитие таблиц перекодирования русского языка происходило попринципу: а мы новый дом построим...А теперь представьте: все эти кодировки смешались в Интернет. Яработаю под Unix и использую KOI8, а вы под Windows и мы не можемпрочитать файлы друг друга из-за проблем с кодировкой.
Это довольнонеудачный пример, так как средств для перекодирования из KOI8 в Windows1251 разработано довольно много. А вот с кодировкой Apple могут возникнуть проблемы. Мне встречались браузеры, некорректно отображающиерусские символы в этой кодировке.Возникает задача: настроить автоматическое перекодирование документов из одной кодировки в другую. Для начала необходимо настроить хотя быперекодирование «на лету» из KOI8 в Windows-1251, так как большинствоклиентов в Сети используют именно эту кодировку (от Windows, как отсмерти, не уйдешь).Обыкновенный англоязычный Apache, входящий в состав большинствадистрибутивов, не сможет вам в этом помочь. Для корректных операций поперекодированию нужно загрузить и установить сервер Russian Apache. Или жепросто установить модуль Apache-RUS. Скачать данный модуль (как и полностью Russian Apache) можно по адресу: ftp://apache.Iexa.ru/pub/apache-ras/.
Приэтом старшая часть версии соответствует оригинальному серверу Apache, младшая — версии модуля Apache-Rus.Рассматривать процесс установки и настройки я буду на примере неочень новой версии сервера — 1.3.3/PL27.3, это не принципиально.
Загрузивфайл, распакуйте его:tar x v z f a p a c h e _ l . 3 . 3 r u s P L 2 7 . 3 . t a r . g zПосле этого перейдите в каталог apache_l. 3 . 3rusPL27 . 3 и запуститесценарий configure:# cd apache_l.3.3rusPL27.3t ./configureМожно также указать некоторые параметры сценария, например, параметр -prefix=path следует использовать при необходимости установить серверв другой каталог. Далее введите ставшие уже привычными вам команды:# make# make installПосле этого нужно настроить сервер, то есть отредактировать его файлыконфигурации. Настройка Russian Apache не отличается от настройки обыкновенного сервера Apache, за исключением настройки модуля перекодирования.
Ниже будет рассмотрена настройка именно перекодирования «на лету»,так как настройка самого сервера описана в предыдущих пунктах этой главы.Директивы перекодирования можно разделить на три группы. Первыеуказывают в какой кодировке хранятся файлы на диске, вторые — определяют названия кодировок, их псевдонимов, таблиц символов. Третья группа372Сервер Apacheопределяет порядок перекодирования документов.
Приведу небольшой пример использования первой группы кодировок:CharsetSourceEnc koi8-rCharsetByExtension windows-1251 .txtЭти директивы находятся в файле httpd. conf. Первая указывает на то,что все файлы на диске, кроме файлов с расширением .txt, хранятся вкодировке koi8-r.
Для последних указывается кодировка — windows-1251.Данные директивы можно включать в блок Location или в файлы.htaccess.Ко второй группе относятся директивы CharsetDecl, CharsetAlias,CharsetRecodeTable и CharsetWideRecodeTable. Они находятся в блоке<IfModule mod_charset.c> — </IfModule> и не нуждаются в изменении.Необходимо только отметить (это нужно для понимания дальнейшего материала), что директива CharsetDecl используется для объявления кодировки, аCharsetAlias — для объявления псевдонима кодировки, например:CharsetDecl windows-1251 ruCharsetAlias windows-1251 w i n x-cp!251 cp!251 cp-1251Название языка (ru) должно быть определено в файле conf / s r m .
c o n f вдирективах AddLanguage и LanguagePriority.С помощью третьей, самой многочисленной, группы вы можете настроитьсервер для автоматической перекодировки символов на основании информации о клиенте. Например, определив, что клиент работает в операционнойсистеме Windows и кодировкой браузера по умолчанию является Windows1251, сервер самостоятельно перекодирует файлы в нужную кодировку. Еслисервер сделает выбор неправильно, пользователь всегда сможет сам изменитькодировку вручную. Существует три способа выбора кодировки:По каталогу, например:http://www.server.ru/koi/file.htmlhttp://www.server.ru/win/file.htmlПо имени сервера, например:http://koi.www.server.ru/file.htmlhttp://win.www.server.ru/file.htmlПо порту, например:http://www.server.ru:8000/file.htmlhttp://www.server.ru:8001/file.htmlТеперь рассмотрим каждый из этих способов.Для перекодирования по каталогу (точнее, по его префиксу) нужнодобавить в блоке VirtualHost псевдоним, например:Alias /koi /www/docsИли же просто создать в нужном каталоге ссылку на самого себя:# cd / w w w / d o c s# In -s .
koiНесмотря на свою простоту, этот способ имеет множество недостатков.Если у вас небольшой сервер, вы можете использовать перекодировку по313Сервер Apacheкаталогу. В другом случае, лучше используйте перекодировку по именисервера или по порту.При использовании перекодировки по имени сервера следует обратитьвнимание на то, чтобы указанный вами сервер был прописан на сервереDNS. После регистрации поддомена внесите следующие строки в ваш файлhttpd.conf:# Естественно, укажите здесь свой IP-адрес<VirtualHost 111.111.111.1>ServerName www.server.ruServerAlias *.www.server.ru# далее следует обычная конфигурация</VirtualHostВ качестве имени поддомена нужно использовать один из псевдонимовкодировки, указанный с помощью директивы CharsetAlias, например, koiили win.Если же сервер DNS администрируете не вы, а кто-то другой и возможности внести изменения в записи DNS у вас нет, то используйте перекодировкупо порту.
Для этого удалите (закомментируйте) директиву Port в файлеконфигурации httpd. conf и вместо нее добавьте следующие директивы:Listen 80Listen 8000Listen 8001Listen 8002Listen 8003CharsetByPort koi8-r 8000CharsetByPort windows-1251 8001CharsetByPort ibm866 8002CharsetByPort iso-8859-5 8003Номера нортов при этом не очень важны. Думаю, это пример настолькопрозрачен, что не нуждается в особых комментариях.
Правда, есть одно но:если сеть клиента защищена брандмауэром (см. гл. 14), не позволяющемобращения к выбранному вами порту, клиент не сможет установить соединение с вашим сервером.Схема (порядок) выбора кодировки определяется директивойCharsetSelectionOrder:CharsetSelectionOrder Dirprefix Useragent Portnumber Hostname UriHostname для выбора по каталогу.CharsetSelectionOrder Hostname UriHostname Useragent Portnumber Dirprefix —для выбора по имени домена.CharsetSelectionOrder Portnumber Useragent Hostname UriHostname Dirprefix для выбора по порту.Для начальной настройки перекодирования ваших знаний уже достаточно, а дополнительную информацию вы найдете в документации по серверуRussian Apache.314Почтовый сервер13Для начала небольшое отступление.
Вкратце напомню о протоколахSMTP и POP, которые будем конфигурировать.SMTP (Simple Mail Transfer Protocol) — сервис в сетях TCP/IP для передачисообщение (т.е. почты). Обычно для SMTP используется порт 25 (см. файл/etc/services).POP (Post Office Protocol) — используется для получения почты с сервера. Портпо умолчанию — 110 (для протокола РОРЗ).Основными МТА (Mail Transfer Agent) — агентами пересылки почты насегодняшний день являются sendmail, postfix и qmail. Кроме основной функции — отправка сообщения электронной почты, каждый их них имеетсобственные эксклюзивные функции. Sendmail является одной из самыхранних программ МТА — своеобразным стандартом, который использовалсяеще в самых ранних версиях Unix.