Apache - виключно надійний і зручний веб-сервер. На жаль, є ті, хто не хоче використовувати його в якості локального сервера з однієї причини - через відсутність графічного конфігуратора навіть в середовищі Windows, що досить незвично для багатьох користувачів цієї системи. Настроюється Apache шляхом редагування вручну файлу конфігурації httpd.conf. Але уявлення про складність і незбагненності цього процесу помилкові з двох причин. Перша - в коментарях httpd.conf цілком достатньо інформації для того, щоб можна було розібратися з будь налаштуванням. Друга - щоб зробити з тільки що встановленого Apache сервер, налаштований для цілком комфортної роботи, треба міняти зовсім небагато.

Що нам треба?

  1. Запустити найпопулярніший веб-сервер під найпопулярнішою платформою - Windows.
  2. Зберігати файли сайту в тій директорії, в якій нам це зручно, - нехай це буде C: \ www.
  3. Не мати проблем з кодуваннями, в першу чергу - з відображенням кирилиці.
  4. Цілком можливо - одночасно працювати з декількома сайтами.

Директива DocumentRoot визначає директорію, яка буде коренем сайту

Спробуємо вирішити всі ці проблеми. Заходимо туди, де встановлений Apache. Знаходимо і відкриваємо файл httpd.conf - він знаходиться в піддиректорії conf. Тут необхідно нагадати, що всі рядки цього файлу, що починаються з "решітки" (#), існують тільки в якості текстових коментарів, в якості настройок сервера ж використовуються рядки, "решітки" на початку не мають. Спочатку виконуємо настройку директорії, яка буде видаватися веб-сервером в якості кореневої директорії сайту. Шукаємо в тексті директивуDocumentRoot- рядок, що починається на DocumentRoot. Ця директива визначає, яка директорія буде зіставлятися з кореневою директорією сайту. Виправляємо її наDocumentRoot "C :/www"(слід зазначити - тут і далі в дорозі використовуються Слеш, нахилені вправо, а не вліво, як звикли користувачі Windows). Проблема з розташуванням сайту в потрібному місці вирішена.

Для кореневій директорії сайту і всіх її піддиректорій потрібно встановити правила доступу і задіяні функції сервера

Далі встановлюємо для неї правила безпеки. Для цього в Apache використовується директиваDirectory. Використовується вона таким чином:

директорія>
Optionsфункції використовуваних параметрів наступний.

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існує в двох примірниках-й корневая_діректорія_сайта
>. Перший варіант ми взагалі не чіпаємо, переходимо до другого і встановлюємо наступні параметри:

C :/www>
OptionsIndexes FollowSymLinks
AllowOverrideNone
Orderallow, deny
Allow from all

У перекладі на російську мову - для директорії C :/www, обраної раніше в якості кореневої для нашого сайту, а також усіх її піддиректорій обрані такі параметри:

  • з функціональності сервера дозволені індекси в директоріях і переходи по символічним посиланням (правда, це актуально тільки для Unix);
  • можливість перевизначення параметрів за допомогою файлів. htaccess відсутня повністю, але з урахуванням того, що ми маємо повний доступ до сервера, вона і не актуальна - все можна налаштувати через httpd.conf;
  • доступ до сервера дозволений зі всіх хостів.

Зберігаємо httpd.conf і перезапускаємо Apache - c допомогою Apache Monitor або в командному рядку командоюapache-k restart. Все, настройка кореневій директорії сайту закінчена.

Перевіряємо, чи правильно ми все зробили. Створюємо в C: \ www найпростішу веб-сторінку, відкриваємо браузер і в адресному рядку вводимо адресу: http://127.0.0.1/имя_созданной_страницы.Наша сторінка повинна відкритися. Якщо не відкрилася - найуважнішим чином треба перевірити всі внесені в httpd.conf зміни - швидше за все, щось було зроблено неправильно.

Але і в тому випадку, якщо вона буде відкриватися, цілком можливо, що замість символів кирилиці ми побачимо щось нечитабельним. Відбувається це тому, що, по-перше, 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 дає дуже зручну можливість працювати з декількома сайтами незалежно один від одного

І ще. 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 додамо наступні рядки:


ServerAdmin webmaster @ site2
ServerName site2
DocumentRoot "C :/www2"
ScriptAlias ??/cgi/"C :/www2/cgi/"
ErrorLog" C :/www2/error.log "
CustomLog" C :/www2/custom.log "common

Перезапускаємо Apache. Тепер, набравши в рядку браузера 127.0.0.1, ми потрапляємо на перший локальний сайт, набравши 127.0.0.2 - на другий. Залишається сказати тільки, що всередині кожного контейнера VirtualHost можна використовувати практично будь директиви Apache, що дає можливість налаштовувати кожен сайт самим детальним чином.

Посилання по темі

  • Офіційний сайт проекту Apache
  • Сторінка документації по Apache 1.3
  • Сторінка документації по Apache 2.0

Статьяполучена: hostinfo.ru

Детальніше »