Налаштування Apache

  1. Файл "httpd.conf"
  2. Загальні налаштування
  3. налаштування CGI
  4. Установки мови
  5. налаштування PHP
  6. налаштування SSI
  7. Віртуальні хости

Файл "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 дізнається про існування віртуальних хостів?