Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 69
Текст из файла (страница 69)
Обозначить группу файлов можно с помощью шаблонов,например, шаблон *.html определяет все файлы, имена которых заканчиваются на .html. В URL-адрес не включается протокол и имя сервера. Примерописания блока Location представлен в листинге 12.8.10 Зи.851289Сервер ApacheЛистинг 12.8. Блок Location<Location URL>директивы управления доступом</Location>12.2.2. Конфигурирование Apache с помощью netconfПрактически все параметры Web-сервера Apache можно установить, используя конфигуратор netconf (или linuxconf). Для этого запустите netconf иперейдите на вкладку Server Tasks, а затем нажмите на кнопку «Apache Webserver» (см.
рис. 12.2).С помощью netconf вы легкоможете установить основные па\\•. . Defaults|Щ- - - - - •j,раметры Apache (см. рис. 12.3),I ' ' ' •:' '.. - -••-••• - "'\\определить виртуальные хосты,- - . '-'•-• '• • ' " &••;•" : ..•; • . ,•• '"j:установить параметры подката;•"-•'-' .-""- - : • ' : " ' . - - ;" Files specs.
.. -.•'.-•'• " ' ''''• •-'•-\\логов, определить спецификаi" . ""'- - : . " • " " Iцию каталогов и модулей, а такI' ' -'•" " "": ;:" ":". : Woaate Ц| " ' • " ''" "|iже установить параметры моду|• : '••,'. --V "-' "'^Лип-апе*;, ' 'V ";-: •.iля mod_ssl (см. рис. 12.4),| •. ." . " " - . ' : • -. • гтч'•:> "'-.'....•j•конфигурирование которогоi •.Dismiss|'Hfclpj :рассмотрено ниже в этой главе.1::::: :S:1:-:: ::Рис. 12.2. Конфигурирование Apacheс помощью netconfYau tan eortfiguta modAsst.options in your Apache Server:SessionSSLMutexAccentРис.
12.3. Основные параметры Apache290Cancel:«elРис. 12.4. Конфигурирование модуля mod_sslСервер Apache12.3. Каталоги пользователейДиректива UserDir включает поддержку пользовательских каталогов.Эта директива определяет общее название подкаталога в домашних каталогах всех пользователей. По умолчанию используется каталог public_html.Данная возможность очень удобна при использовании ее в большой корпорации, где каждый сотрудник имеет собственную страничку. Раньше этавозможность часто использовалась на серверах, предоставляющих бесплатный хостинг. Может быть, помните адреса вида http://www.chat.ru/~mypage?Сейчас же все чаще используется технология виртуальных серверов, которую мы рассмотрим в следующем пункте, но знать что такое каталогипользователей и как с ними работать тоже не помешает. Тем более, чтодомашние каталоги настраиваются намного быстрее и проще, чем виртуальный сервер — нужно всего лишь определить директиву UserDir и указать месторасположения домашних каталогов.Доступ к файлам, расположенным в этих каталогах, производится спомощью указания через наклонную черту пользователя после имени сервера.
Например, пусть имя сервера www.server.com, имя пользователя — denis,тогда URL-адрес будет выглядеть так: http://www.server.com/~denis/. Приэтом сервер самостоятельно определит, где именно расположен домашнийкаталог пользователя. Если домашний каталог пользователя /home/den, тосервер передаст клиенту файл /home/den/public_html/index.html.12.4.
Виртуальный HTTP-серверКонцепция виртуальных хостов позволяет серверу Apache поддерживать. несколько Web-узлов. Получается, что один Web-сервер заменяет несколькосерверов, и вместо одного узла пользователи видят отдельные Web-узлы. Этоочень удобно, если нужно организовать персональные Web-узлы пользователей или собственные Web-узлы подразделений компании, например,develop.mycompany.com.Сервер Apache можно настроить несколькими способами: чтобы запускалсяодин сервер, который будет прослушивать ВСЕ обращения к виртуальнымсерверам, или запускать отдельный процесс для каждого виртуального сервера.В первом случае один сервер будет одновременно обслуживать все виртуальные.Если вас интересует такой вариант, нужно настраивать виртуальные сервера спомощью директивы VirtuaJHost. Настройка отдельных процессов для каждогосервера осуществляется с помощью директивы Listen и BindAddress.В этом разделе я буду рассматривать именно первый случай.
Внутриблока директивы VirtualHost можно использовать любые директивы, кромеServerType, BindAddress, Listen, NameVirtualHost, ServerRoot, TypesConfig,PidFile, MinRequestPerChild, MaxSpareServers, MinSpareServers, так как некоторые из них относятся к основному HTTP-серверу (например, ServerType),а некоторые - - к о второму варианту настройки виртуальных серверов издесь неприемлемы. Обязательно должны присутствовать директивыServerName, DocumentRoot, ServerAdmin и ErrorLog.291Сервер ApacheВ зависимости от версии и от настроек Apache виртуальные узлы могутпрописываться или в файле h t t p d . c o n f , или в файле v h o s t s .
c o n f . Виртуальные серверы можно идентифицировать по имени или по IP-адресу.12.4.1. Виртуальные серверы с идентификацией по имениИдентификация по имени имеет существенное преимущество перед идентификацией по IP-адресу: вы не ограничены количеством адресов, имеющемся у вас в распоряжении. Вы можете использовать любое количествовиртуальных серверов, и при этом вам не потребуются дополнительныеадреса.
Такое возможно благодаря использованию протокола HTTP/1.1. Данный протокол поддерживается всеми современными браузерами.Поддержка виртуальных хостов обеспечивается директивами VirtualHostи NameVirtualHost. Если ваша система имеет только один IP-адрес, егонужно указать в директиве VirtualHost. Внутри блока директивы VirtualHostзаписывается директива ServerName. Эта директива задает доменное имя длясоздаваемого виртуального сервера. Это обязательно нужно сделать, чтобыизбежать поиска службой DNS — вы же не хотите, чтобы при неудачномпоиске виртуальный сервер был заблокирован? Все директивы VirtualHostиспользуют один и тот же IP-адрес, заданный директивой NameVirtualHost.В блоке VirtualHost записываются параметры виртуального сервера, причемони записываются для каждого виртуального сервера отдельно.
Примерприведен в листинге 12.9.Листинг 12.9. Два виртуальных сервера — www 121- и libServerName d e n . d h s i l a b s . c o m<NameVirtulaHost 192.168.1.1><VirtualHost 192.168.1.1>ServerName w w w . d h s i l a b s . c o mServerAdmin w e b m a s t e r @ d e n . d h s i l a b s . c o mDocumentRoot / v a r / h t t p d / w w w / h t m lErrorLog / v a r / h t t p s / w w w / l o g s / e r r o r . l o gTransferLog logs/access.log</VirtualHost><VirtualHost 192.168.1.1>ServerName l i b . d h s i l a b s . c o mServerAdmin w e b m a s t e r S d e n . d h s i l a b s .
c o mDocumentRoot / v a r / h t t p d / l i b / h t m lErrorLog / v a r / h t t p s / l i b / l o g s / e r r o r . l o gTransferLog logs/access.log</VirtualHost>Если ваша система имеет только один IP-адрес, доступ к основномусерверу станет невозможным, то есть вы не сможете использовать егонапрямую. Можно основной сервер использовать в качестве виртуального,что я и сделал в листинге 12.9: основной сервер www является виртуальным.При наличии двух IP-адресов можно один присвоить основному серверу, адругой — виртуальному.292Сервер ApacheСервер Apache позволяет использовать несколько доменных имен длядоступа к одному серверу, например:ServerAlias w w w .
d h s i l a b s . c o m w w w 2 . d h s i l a b s . c o mПри этом запросы, посланные по IP-адресам, которые присвоены вашим виртуальным хостам, должны соответствовать одному из указанныхдоменных имен. Чтобы зафиксировать запросы, не соответствующие ниодному их этих имен, нужно с помощью опции default:* создать виртуальный хост, который будет обслуживать такие запросы:< V i t r u a l H o s t _default_:*>Обратите внимание на то, что в рассмотренном примере адресаwww.dhsilabs.com и lib.dhsilabs.com должны быть прописаны в DNS.12.4.2.
Виртуальные серверы с идентификацией по IP-адресуВ директиве VirtualHost в качестве адресов можно использовать доменные имена, но лучше указывать IP-адрес, причем действительный, а невиртуальный. В этом случае вы не будете зависеть от DNS при разрешенииимени. Также потребуется один IP-адрес для вашего основного сервера.Если же распределить все адреса между виртуальными серверами, то нельзябудет получить доступ к основному серверу.Листинг 12.10. Идентификация по IP-адресу<VitrualHost 192.168.1.2>ServerName w w w . d h s i l a b s . c o mServerAdmin webmaster@den.dhsilabs.comDocumentRoot /var/httpd/www/htmlErrorLog / v a r / h t t p s / w w w / l o g s / e r r o r .
l o g</VirtualHost><VirtualHost lib.dhsilabs.com>ServerName l i b . d h s i l a b s . c o mServerAdmin webmaster@den.dhsilabs.comDocumentRoot /var/httpd/lib/htmlErrorLog / v a r / h t t p s / l i b / l o g s / e r r o r . l o g</VirtualHost>В приведенном примере (см. листинг 12.10) сконфигурированы два виртуальных сервера с идентификацией по IP-адресу. Один из них используетсам IP-адрес, а другой — доменное имя, соответствующее IP-адресу.При конфигурировании виртуальных серверов можно использовать опцию ExecCGI, которая разрешает выполнение CGI-скриптов на виртуальном сервере. Ниже приведен пример для почтового Web-интерфейса(листинг 12.11).Листинг 12.11.