Настройка Apache

Файл «httpd.conf»

Основной файл конфигурации этого сервера — «httpd.conf». Лежит он в каталоге «conf» в root-директории Apache. Вот над ним вам и придеться издеваться. Скажу сразу, если вы не понимаете английского, удалите из этого файла все комментарии и пояснения, оставьте только сами директивы (и закоментированные тоже); таким образом вы сможете быстрее находить нужную директиву, не роясь среди множества непонятных вам пояснений. Синтаксис файла очень простой: «директива значение», все строки не соответствующие этому виду можно удалить.
Внимане! Некоторые директивы могут выглядеть так:
#директива значение
<блок директив />
директива значение
</блок директив>
<блок директив />
# Комментарий
директива значение
# Комментарий
</блок директив>

и т. п. Эти строки удалять не нужно!

Символ комментария в «http.conf» — «#» (решетка). Т. е. все символы, идущие в строке после «#» не воспринимаются сервером. Так вы можете добавлять собственные комментарии. Убирая этот символ перед закомментированными строками вы делаете их доступными для чтения сервером.
Общие настройки

Вам нужно будет сделать правку файла «httpd.conf». У некоторых директив изменить значение, другие раскомментировать, третьи добавить. Далее я приведу список директив и их значений, которые должны присутствовать в файле конфигурации Apache.

Каталог с файлами сервера (не путать с «DocumentRoot»):
ServerRoot «C:/Server/Apache/Apache2»

Привязывает Apache к конкретному порту:
Listen 80

Имя сервера (на работу это не влияет):
ServerName localhost:80

Администратор сервера. Содержит ваш адрес электронной почты, который будет отображаться при некоторых ошибках сервера:
ServerAdmin your@email.name

Вам необходимо создать папки, где будут храниться ваши сайты. По умолчанию Apache устанавливает «DocumentRoot» — «%ServerRoot%/htdocs» (т. е. если вы установили Apache в папку «C:\Server\Apache», то «DocumentRoot» будет выглядеть так: «C:/Server/Apache/Apache2/htdocs»). Вы должны изменить значение «DocumentRoot» на «C:/Sites/home/localhost/www».
DocumentRoot «C:/Sites/home/localhost/www»

Строго следуйте моим инструкциям, чтобы быть уверенными, что все это у вас потом заработает. Создайте на диске «C:» папку «Sites». В ней создайте каталог «home», уже в нем — «localhost», «neebet», «mysite». В каждую из этих папок («localhost», «neebet», «mysite») положите каталоги «www» (для хранения html документов), «cgi» (для хранения cgi-скриптов), пустые файлы access.log (журнал доступа к серверу) и error.log (журнал ошибок сервера). Т. о. структура каталогов, в которых будут храниться ваши сайты должна выглядеть так:

Зачем это нужно, поймете потом, а сейчас просто сделайте как я говорю.

Далее замените блок «<Directory «C:/Server/Apache/Apache2/htdocs»>» на следующее:
<Directory «C:/Sites»>
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Этими директивами вы разрешите просмотр содержимого каталога в браузере при отсутствии индексных файлов, включите поддержку SSI, разрешите использовать файлы .htaccess для настройки каталогов и разрешите доступ для всех к сайту.

Задание индексного файла для директории (этот файл сервер будет отображать при обращении к каталогу без указания имени файла):
DirectoryIndex index.php index.html index.html.var
Настройки CGI

Задание псевдонима для каталога с cgi-скриптами «C:\Sites\home\localhost\cgi». При указании пути вида http://localhost/cgi/ или http://localhost/cgi-bin/, Apache будет обращаться к каталогу «C:\Sites\home\localhost\cgi»:
ScriptAlias /cgi/ «C:/Sites/home/localhost/cgi/»
ScriptAlias /cgi-bin/ «C:/Sites/home/localhost/cgi/»

Каталог «C:\Sites\home\localhost\cgi» также будет доступен вашим виртуальным хостам при обращении вида «http://имя_виртуального_хоста/cgi-bin/cgi-скрипт.bat». Напрмер, если вы введете в браузере http://neebet/cgi-bin/cgitest.bat, то будет выполнен код, находящийся в файле «C:\Sites\home\localhost\cgi\cgitest.bat», который также доступен по адресу http://localhost/cgi/cgitest.bat. У виртуальных хостов есть свой каталог для cgi-скриптов, доступный по адресу «http://имя_виртуального_хоста/cgi/cgi-скрипт.bat». Каталоги «cgi» не доступны для просмотра в браузере, и при прямом обращении к ним вы получите сообщение об ошибке «403».

Указывает Apache, что файлы с расширением «cgi», «bat», «exe» нужно воспринимать как cgi-скрипты:
AddHandler cgi-script .cgi .bat .exe

Блок «<Directory «C:/Server/Apache/Apache2/cgi-bin»>» замените на:
<Directory «C:/Sites/home/localhost/cgi»>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Языковые настройки

Остальные строки вида «AddLanguage lang .lang» можете закомментировать (если конечно вам не нужна поддержка этих языков):
AddLanguage en .en
AddLanguage ru .ru

Устанавливает языковой приоритет:
LanguagePriority en ru

Настройка кодировок:
AddDefaultCharset WINDOWS-1251
AddCharset WINDOWS-1251 .cp-1251 .win-1251
Настройки PHP

Подключение PHP:
AddType application/x-httpd-php php phtml
ScriptAlias /_php_/ «C:/Server/PHP/»
Action application/x-httpd-php «/_php_/php.exe»
Настройки SSI

Включение SSI:
AddType text/html .shtml
AddHandler server-parsed .shtml .html .htm

Теперь основные дерективы заданы. Для вступления изменений в силу — перезапустите Apache.
Виртуальные хосты

Итак, вы создали каталог «localhost» для хранения и тестирования документов вашего сайта. Но если у вас не один сайт? Можно конечно создать каталоги для других сайтов внутри «localhost» и обращаться к ним «http://localhost/site», но это не совсем удобно. Тем более, что Apache дает возможность решить эту проблему с помощью виртуальных хостов. Есть два вида виртуальных хостов: отдельные для каждого IP адреса и использующие один IP (name-based хосты). Я объясню как настроить последние.

Вы уже создали ранее папки «neebet» и «mysite» в директории «home». Это и есть корни ваших виртуальных хостов. В них должны быть папки «www» и «cgi», файлы access.log и error.log. Т. е. все так же как и с каталогом «localhost». Все ваши виртуальные хосты будут использовать IP «127.0.0.1».

Добавьте в файл «httpd.conf» следующее:
NameVirtualHost 127.0.0.1
#localhost
<VirtualHost localhost>
ServerAdmin me@localhost
ServerName localhost
DocumentRoot «C:/Sites/home/localhost/www»
ScriptAlias /cgi/ «C:/Sites/home/localhost/cgi/»
ErrorLog C:/Sites/home/localhost/error.log
CustomLog C:/Sites/home/localhost/access.log common
</VirtualHost>
#neebet
<VirtualHost neebet>
ServerAdmin me@neebet
ServerName neebet
DocumentRoot «C:/Sites/home/neebet/www»
ScriptAlias /cgi/ «C:/Sites/home/neebet/cgi/»
ErrorLog C:/Sites/home/neebet/error.log
CustomLog C:/Sites/home/neebet/access.log common
</VirtualHost>
#mysite
<VirtualHost mysite>
ServerAdmin me@mysite
ServerName mysite
DocumentRoot «C:/Sites/home/mysite/www»
ScriptAlias /cgi/ «C:/Sites/home/mysite/cgi/»
ErrorLog C:/Sites/home/mysite/error.log
CustomLog C:/Sites/home/mysite/access.log common
</VirtualHost>

Можно добавить в блоки «<VirtualHost>» и другие параметры, однако лучше управлять виртуальными хостами с помощью .htaccess. Также стоит отметить, что все параметры, не указанные в блоках «<VirtualHost>» или в .htaccess, наследуются от главного хоста (т. е. от «localhost»).

Т. о. вы настроили Apache для работы с виртуальными хостами. Имена, естесственно, можно изменить, но при этом будте внимательны с путями!

Теперь определимся с тем, как Windows узнает о существовании виртуальных хостов? Для этого придется отредактировать файл «hosts» (не путать с файлом «hosts.sam»), хранящийся в папке «%WINDOWS%\System32\drivers\etc». Выглядит он примерно так:
# (C) Корпорация Майкрософт (Microsoft Corp.), 1993-1999
#
# Это образец файла HOSTS, используемый Microsoft TCP/IP для Windows.
#
# Этот файл содержит сопоставления IP-адресов именам узлов.
# Каждый элемент должен располагаться в отдельной строке. IP-адрес должен
# находиться в первом столбце, за ним должно следовать соответствующее имя.
# IP-адрес и имя узла должны разделяться хотя бы одним пробелом.
#
# Кроме того, в некоторых строках могут быть вставлены комментарии
# (такие, как эта строка), они должны следовать за именем узла и отделяться
# от него символом ‘#’.
#
# Например:
#
# 102.54.94.97 rhino.acme.com # исходный сервер
# 38.25.63.10 x.acme.com # узел клиента x
127.0.0.1 localhost

В него нужно будет дописать две строки:
127.0.0.1 neebet
127.0.0.1 mysite

Теперь, при обращении http://neebet загрузится содержимое «C:\Sites\home\neebet\www».

Для вступления изменений в силу — перезапустите Apache.

Share