Apache HTTP Server - конфигурация под наши нужды
И так, пора бы наш Apache и сконфигурировать. Да, мы можем, без стеснения использовать и то что есть сейчас, но, складывать проекты в директорию /webservices/apache/Apache2/htdocs не самое удобное в жизни программиста (поверьте на слово, я пытался). По этому для каждого проекта мы будем делать отдельный виртуальный сервер/хост. Это не так сложно. Нужно всего-то немножко перенастроить сервер.
### Section 1: Global Environment
Всегда проверяю, включены ли такие модули: mod_cgi, mod_info, mod_rewrite, mod_status. Для этого в файле надо найти начало списка подгружаемых модулей. Его всегда можно узнать по комментарию:
# LoadModule foo_module modules/mod_foo.so
или по длинному списку LoadModule директив. Найдите соответствующие модули и уберите перед ними символ # в начале строки. Включаем ExtendedStatus On для просмотра статуса сервера, можем поправить адрес электронной почты сервера в директиве ServerAdmin и ServerName на нам нужные (если мы не ввели верные во время инсталляции).
### Section 2: ‘Main’ server configuration
Все очень любят использовать всякие директивы для Apache хранимые не в самом httpd.conf а в .htaccess файлах (о них вы можете прочесть на сайте). Их Apache читает каждый раз при запросе, по этому, при возможности ими рекомендуют не пользоваться, а все настройки хранить в httpd.conf. Но на сервере для разработок каждый раз, во время разработки ползать в httpd.conf и перезапускать Apache - не всегда удобно, поэтому мы будем пользоваться .htaccess . Для этого, в настройках директорий с нашими файлами мы будем всегда их включать, путём установки директивы AllowOverride All. К примеру, для директории /webservices/apache/Apache2/htdocs, мы в оtделе мы по умолчанию имеем AllowOverride None, заменим на AllowOverride All.
Поставим знак комментария перед директивой UserDir - мы не будем это использовать. Не надо.
Изменим ка DirectoryIndex index.html index.html.var на DirectoryIndex index.htm index.html index.html.var
Поставим знак комментария перед директивой CustomLog logs/access.log common и уберём знак комментария перед директивой CustomLog logs/access.log combined - оно информативнее, и администраторы чаще их используют для анализа. А так как наш сервер возможно будет иметь связь с внешним миром - лучше знать немного больше.
Проверьте, нет включена ли у вас директива AddDefaultCharset. На некоторых серверах она имеет значение ISO-8859-1. Если вы намерены использовать только UTF-8 или только одну кодировку всегда (не верю в это) то установите эту кодировку для этой директивы. Если же вы, как я, работаете на большим количеством проектов с разной кодировкой (у меня ISO-8859-1, ISO-8859-13, Windown-1251, Windows-1257 и UTF-8), то рекомендую вам перевести директиву AddDefaultCharset в Off.
Раскоменнтируйте и и в разделе Allow from … впишите адреса, с которых разрешён доступ к этим ресурсам. По этим адресам мы сможем посмотреть информацию о сервере.
### Section 3: Virtual Hosts
Так как у меня нету кучи внешний IP адресов, мы будем пользоваться Name-based Virtual Hosting. Разницу и полное описание вы можете найти в документации: Apache Virtual Host documentation. Нам в нашем случае понадобиться куча доменов второго или третьего уровня, хотя можем и четвёртого, и скажем свой DNS сервер, который сможет нам это всё дать. Вам уже страшно? А вы не бойтесь. Кучу доменов четвёртого уровня мы можем получить бесплатно у (к примеру) DynDNS - они нам дадут домен третьего уровня, а при регистрации мы отметим что хотим использовать * в алиасах нашего адреса и получим нескончаемое количество доменов четвёртого уровня. Для тех, у кого нету возможности добыть интернет домой и читают эту статью с дискетки/свистка/диска (как я это делал вечерами с 1999 до 2002), советую не отчаиваться - у вас сейчас появиться свой DNS сервер, точнее у вас он уже есть. И находиться он у вас по адресу %WINDIR%\system32\drivers\etc\ и это маленький файл hosts. Открываем его в текстовом редакторе и вписываем IP[tab]домен (пример: 127.0.0.1 www.example.com) - теперь набрав введённый домен, ваш компьютер будет думать что он расположен на машине с введённым IP (да, этим пользуется некоторый AdWare программное обеспечение, переписывая в файле hosts IP адреса популярных сайтов на свои с рекламой). Уберём знак комментария перед директивой NameVirtualHost и, если мы имеем более одного IP адреса на машине, вместо * впишем тот, который будет связан с внешним миром, в противном случае он будет отвечать по всем адресам, а нам не всегда это надо. Я сейчас оставлю *, так как у меня один IP адрес и он постоянно меняется.
Перейдём к созданию виртуальных серверов/хостов. По адресу /webservices/apache/Apache2/conf мы создадим директорию vhosts, в которую будем складывать конфигурации виртуальных серверов/хостов, а в конце httpd.conf добавим директиву Include conf/vhosts/*.conf. На настоящем сервере так никогда не будет - это затормозит его старт и достаточно опасно, поэтому всё сложат в httpd.conf (хотя всё зависит от администратора и используемой конфигурации, некоторые сервера Apache часть конфигурации держат в MySQL базе данных).
Сделаем директорию /vhosts и дадим права нашему пользователю Apache на эту папку для выполнения таких операций: чтение и выполнение (RX). В ней мы сделаем директорию default, а в ней www и logs. На директорию logs нужно дать разрешение на чтение, выполнение и запись (RWX).
Итак, перейдём к конфигурации Apache. Главный конфигурационный файл у нас лежит в директории /webservices/apache/Apache2/conf и называется httpd.conf. Описание всех его директив вы можете найти по адресу http://httpd.apache.org/docs/2.0/. Откройте его в своём любимом текстовом редакторе и приготовтесь. Скажу честно - большинство директив я оставляю по умолчанию.
В директории /webservices/apache/Apache2/conf/vhosts создадим файл default.conf и в него впишем:
<VirtualHost *:80> ServerAdmin webmaster@example.com DocumentRoot "/vhosts/default/www/" ServerName www.example.com <Directory "/vhosts/default/www/"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> ErrorLog /vhosts/default/logs/error.log CustomLog /vhosts/default/logs/access.log combined </VirtualHost>
К сожалению, что значит это заклинание - вам обязательно нужно разобраться самим, иначе никак - вам это потом менять по себе.
К сожалению, что значит это заклинание - вам обязательно нужно разобраться самим, иначе никак - вам это потом менять по себе.Для создания нового виртуального сервера/хоста нам нужно сделать новую директорию, радом с default и сделать новый конфигурационный файл (можно копировать default.conf изменяя пути).
Вроде бы ничего не забыл. Идём по адресу /webservices/apache/Apache2/bin/, и из командной строки запускаем: apache.exe -t что заставит наш сервер протестировать всю конфигурацию и выдать либо Syntax OK (если вы всё сделали правильно), либо сообщение об ошибке и номер строки и адрес конфигурационного файла. Чтож, раз всё ОК - запускаем наш сервер и проверить как работают нами выбранные адреса для сервера, виртуального сервера/хоста и просмотра настроек сервера.











Уважаемы мне не помогла ваша документация, видимо мои руки ростут не из того место, или вы просто что то забыли!
Что именно за проблема?
Воспользовался вашй документацией но увы призапуске
host1
он открывается а при запуске
host2
он открывает host1
Уже сделал сам…
если у кого не получается мыльте если смогу поскажу..
Привет, помоги сделать домен 3 уровня. Я хотел сделать http://www.forum.aptech.kz
или имя.aptech.kz
Как это сделать в conf apache?
или может и в домене dns?
Жду от вас ответа…..