Налаштування Apache
- Файл "httpd.conf"
- Загальні налаштування
- налаштування CGI
- Установки мови
- налаштування PHP
- налаштування SSI
- Віртуальні хости
Файл "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 [email protected]Вам необхідно створити папки, де будуть зберігатися ваші сайти. За замовчуванням 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.
Зміст Але якщо у вас не один сайт?Тепер визначимося з тим, як Windows дізнається про існування віртуальних хостів?