Настройка Apache для начинающих
описание минимальной полноценной настройки веб-сервера
Apache – исключительно надежный и удобный веб-сервер. К сожалению, есть те, кто не хочет использовать его в качестве локального сервера по одной причине – из-за отсутствия графического конфигуратора даже в среде Windows, что достаточно непривычно для многих пользователей этой системы. Настраивается Apache путем редактирования вручную файла конфигурации httpd.conf. Но представления о сложности и непонятности этого процесса ошибочны по двум причинам. Первая – в комментариях httpd.conf вполне достаточно информации для того, чтобы можно было разобраться с любой настройкой. Вторая – чтобы сделать из только что установленного Apache сервер, настроенный для вполне комфортной работы, надо менять совсем немного.
Что нам надо?
- Запустить самый популярный веб-сервер под самой популярной платформой – Windows.
- Хранить файлы сайта в той директории, в которой нам это удобно, – пусть это будет C:\www.
- Не иметь проблем с кодировками, в первую очередь – с отображением кириллицы.
- Вполне возможно – одновременно работать с несколькими сайтами.
Попробуем решить все эти проблемы. Заходим туда, где установлен Apache. Находим и открываем файл httpd.conf – он находится в поддиректории conf. Здесь необходимо напомнить, что все строки этого файла, начинающиеся с "решетки" (#), существуют только в качестве текстовых комментариев, в качестве настроек сервера же используются строки, "решетки" в начале не имеющие. Сначала выполняем настройку директории, которая будет выдаваться веб-сервером в качестве корневой директории сайта. Ищем в тексте директиву DocumentRoot – строку, начинающуюся на DocumentRoot. Эта директива определяет, какая директория будет сопоставляться с корневой директорией сайта. Исправляем ее на DocumentRoot "C:/www" (следует отметить – здесь и далее в пути используются слэши, наклоненные вправо, а не влево, как привыкли пользователи Windows). Проблема с расположением сайта в нужном месте решена.
Далее устанавливаем для нее правила безопасности. Для этого в Apache используется директива Directory. Используется она следующим образом:
<Directory директория>
Options функции сервера
AllowOverride варианты
Order варианты
</Directory>
Список используемых параметров следующий.
Options – определяет, какие функции сервера будут доступны. Возможны следующие варианты:
- Includes – разрешено использование SSI (Server-Side Includes);
- IncludesNOEXEC – разрешено использование SSI с ограничениями (не допускаются #exec и #include);
- Indexes – разрешено использование индексных файлов, причем если URL указывает на директорию на сайте (например, www.domain.ru/dir/), в которой нет индексного файла, то будет показываться содержимое этой директории, если же этой опции нет – выдается "доступ запрещен";
- ExecCGI – разрешено выполнение скриптов CGI;
- FollowSymLinks – сервер следует по символическим ссылкам в директории (имеет смысл в Unix);
- SymLinksIfOwnerMatch – то же самое, но только в том случае, если целевой файл имеет того же владельца, что и ссылка;
- All – все вышеописанное вместе;
- None – ничего из вышеописанного;
- MultiViews – возможность подбора соответствующего контента и его выдачи в зависимости от предпочтений клиента (браузера) – указывается отдельно, даже если включено все (Options All).
AllowOverride – определяет, какие директивы из файлов .htaccess могут преобладать над такими же, указанными в httpd.conf. Варианты:
- AuthConfig – позволяет использовать директивы авторизации;
- FileInfo – позволяет использовать директивы для работы с типами документов;
- Indexes – позволяет использовать директивы для работы с индексными файлами;
- Limit – позволяет использовать директивы для определения доступа к хосту;
- Options – позволяет использовать директивы для работы со специфическими функциями директорий;
- All – все вышеуказанное;
- None – ничего из вышеуказанного.
Order – устанавливает правила доступа к серверу. Варианты:
- Deny,Allow – директива Deny определяется перед Allow, доступ по умолчанию разрешен, кроме хостов, указанных в следующей строке после Deny from.
- Allow,Deny – директива Allow определяется перед Deny, доступ по умолчанию запрещен, кроме хостов, указанных в следующей строке после Allow from.
- Mutual-failure – разрешен доступ только тех хостов, которые присутствуют в Allow и отсутствуют в Deny.
Теперь на основе всего этого начинаем настраивать наш сервер. В httpd.conf по умолчанию директива Directory существует в двух экземплярах – <Directory /> и <Directory корневая_директория_сайта>. Первый вариант мы вообще не трогаем, переходим ко второму и устанавливаем следующие параметры:
<Directory C:/www>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
В переводе на русский язык – для директории C:/www, выбранной ранее в качестве корневой для нашего сайта, а также всех ее поддиректорий выбраны такие параметры:
- из функциональности сервера разрешены индексы в директориях и переходы по символическим ссылкам (правда, это актуально только для Unix);
- возможность переопределения параметров с помощью файлов .htaccess отсутствует полностью, но с учетом того, что мы имеем полный доступ к серверу, она и не актуальна – все можно настроить через httpd.conf;
- доступ к серверу разрешен со всех хостов.
Сохраняем httpd.conf и перезапускаем Apache – c помощью Apache Monitor или в командной строке командой apache -k restart. Все, настройка корневой директории сайта закончена.
Проверяем, правильно ли мы все сделали. Создаем в C:\www простейшую веб-страничку, открываем браузер и в адресной строке вводим адрес:
Но и в том случае, если она будет открываться, вполне возможно, что вместо символов кириллицы мы увидим нечто нечитаемое. Происходит это потому, что, во-первых, Apache предоставляет браузеру, запросившему страницу, кодировку по умолчанию для этой страницы, а во-вторых – кодировка эта не кириллическая. И если Internet Explorer в большинстве таких ситуаций все равно определяет кодировку из самой страницы, то с Opera или Mozilla проблемы практически гарантированы. Конечно, можно выставлять используемый набор символов каждый раз вручную в браузере, но сколь-нибудь удобным это назвать невозможно.
Поэтому настраиваем Apache на выдачу нужной кодировки по умолчанию. Находим в httpd.conf строку, начинающуюся на AddDefaultCharset. Скорее всего, полностью она будет выглядеть как AddDefaultCharset ISO-8859-1, что соответствует кодировке ISO-8859-1, в которой символы кириллицы отсутствуют. Меняем ISO-8859-1 на windows-1251, если предполагается, что сайт будет содержать страницы в кодировке Windows, на KOI-8r, если используется KOI-8, или на ту, которая нужна. Сохраняем файл, перезапускаем Apache – и наблюдаем нормальный русский язык на нашей тестовой странице в любом браузере.
И еще. Apache достаточно легко настроить на работу с несколькими сайтами. Адреса, которые для них можно использовать, – 127.0.0.2, 127.0.0.3 и так далее. Правда, по сети виден будет только один (тот, который является сайтом по умолчанию, он же 127.0.0.1), но именно для локальной работы это не критично. Раздел httpd.conf, в котором настраивается все для этого необходимое, находится в самом конце файла и называется Virtual Hosts.
Чтобы добавить один дополнительный сайт, создадим директорию, которая будет использоваться как его корневая, например C:\www2. Предположим, что сайт должен откликаться на адрес 127.0.0.2, и дадим ему имя site2. Затем в самый конец раздела Virtual Hosts добавим следующие строки:
<VirtualHost 127.0.0.2>
ServerAdmin webmaster@site2
ServerName site2
DocumentRoot "C:/www2"
ScriptAlias /cgi/ "C:/www2/cgi/"
ErrorLog "C:/www2/error.log"
CustomLog "C:/www2/custom.log" common
</VirtualHost>
Перезапускаем Apache. Теперь, набрав в строке браузера 127.0.0.1, мы попадаем на первый локальный сайт, набрав 127.0.0.2 – на второй. Остается сказать только, что внутри каждого контейнера VirtualHost можно использовать практически любые директивы Apache, что дает возможность настраивать каждый сайт самым детальным образом.
Ссылки по теме
Комментарий #2 в : 30.10.2010, 00:30:00
Редкий случай, когда автор обдуманно и понятно объясняет.
Комментарий #1 в : 07.04.2010, 23:01:15
Спасибо большое за статью Вы очень помогли,,,