• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

FREEHOST.WIKI

Apache – що це?

Стаття також доступна російською (перейти до перегляду).

Apache - це кросплатформне ПЗ для серверів з відкритими вихідними кодами, що розповсюджується у вигляді вільного софту (обмеження на скачування та копіювання відсутні). Перша версія веб-сервера була випущена в 1995 році. З квітня 1996 року і до сьогодення офіційно вважається найбільш затребуваним веб-сервером у глобальній мережі. Близько 46% усіх веб-проектів використовують це програмне забезпечення.

Спочатку розроблявся як покращена версія NCSA HTTPd 1.3 (популярне серверне програмне забезпечення до появи Apache). Проект продовжує свій розвиток завдяки роботі спільноти незалежних розробників. Вибір на користь Apache обумовлений його перевагами: надійність, простота адміністрування, модульна структура, гнучкість та масштабованість. Офіційний сайт проекту httpd.apache.org

Apache також не позбавлений і недоліків:

  • Велика кількість конфігураційних файлів та доступних параметрів (зумовлює зниження рівня безпеки);
  • Падіння продуктивності у разі різкого зростання трафіку.

Зміст

Для чого потрібен Apache?

Тепер, коли відомо, що таке веб-сервер Apache, розглянемо особливості його використання. Даний тип ПЗ застосовується для обробки запитів до контенту, що міститься на серверних ПК. Найпоширеніший приклад використання Apache – обробка запитів відвідувачів сайтів. Клієнти використовують веб-браузери (клієнтське ПЗ) для переходу на веб-сайт та перегляду сторінок. У разі звернення до контенту (перехід за посиланням, навігація по меню веб-сервісу та інше) браузер генерує запит і передає його на сервер. Apache обробляє кожен запит, виконує пошук потрібного контенту, формує відповідь у вигляді HTML-коду, що надходить на бік клієнта (у веб-браузер). Останній перетворює отриманий код в зручний для читання формат веб-сторінок.

Структура веб-серверу Apache

Apache складається з ядра, повністю написаного мовою C та модулів, вибір яких обумовлений особливостями контенту, що зберігається на сервері. Модулі розширюють функціональність ядра Apache. Внесення змін до параметрів ядра можливе шляхом модифікації конфігураційних файлів:

  • httpd.conf – налаштування параметрів рівня сервера;
  • extra/httpd-vhosts.conf – налаштування параметрів віртуального хоста;
  • .htaccess – налаштування параметрів рівня каталогу. Ці файли забезпечують децентралізацію конфігурації веб-сервера. Завдяки інтерпретації на льоту виникає можливість внесення змін до налаштувань серверу без його перезавантаження. Крім того, .htaccess-файли надають контроль над певними функціями веб-застосунків для деяких категорій користувачів, які не мають адміністративних прав.

Внесення змін до налаштувань модулів можливе такими способами:

  • Шляхом модифікації власних конфігураційних файлів модулів;
  • Зміна параметрів конфігураційних файлів операційної системи;
  • Введення параметрів за допомогою командного рядка.

Модулі мультипроцесингу

Для обробки запитів користувача використовують на вибір такі модулі:

  • mpm_prefork – генерує однопотоковий процес для кожного запиту.
  • mpm_worker – генерує мультипотокові процеси, кожен з яких здатний обробляти лише одне з'єднання. Характеризується вищим ступенем масштабування.
  • mpm_event – аналог попереднього модуля, адаптований до роботи зі з'єднаннями типу keep-alive.

Вибір модуля обумовлений характеристиками самого веб-проекту та аудиторією користувачів.

Додаткові модулі

Функціонал веб-сервера Apache розширюють модулі, яких існує понад 500 (частина створена розробниками Apache, решта – сторонніми програмістами). Незважаючи на можливість створення збірки (веб-сервер Apache – це ядро ??+ модулі) в момент компіляції ПЗ, реалізована система динамічного підключення модулів.

Розробка модулів здійснюється для таких цілей:

  • Додати підтримку певних мов програмування;
  • Розширення наявного функціоналу;
  • Внесення змін до основних функцій, усунення багів;
  • Поліпшення системи безпеки.

Для інтеграції з різними ЯП використовуються модулі CGI та FastCGI. Для найбільш затребуваних мов програмування створено окремі модулі (наприклад, apache_asp, mod_php та інші).

Керування URL та інші функції модуля mod_rewrite

Даний модуль – зручний інструмент для фільтрації та модифікації URL. Його можна використовувати для приховування деяких частин адреси сайту, наприклад розширення файлу «.php» (Актуально для сайтів, створених мовою PHP). Для керування роботою модуля вводять директиви (правила) у .htaccess-файлах.

Наприклад, для заміни розширення файлів «.aspx» на «.php» необхідно ввести таке:

RewriteEngine On

RewriteBase /

RewriteRule ^(.*)\.php$ $1.aspx {QSA,L]

Як видно, для створення правил використовуються регулярні вирази (наприклад, символ «^» характеризує початок рядка, запис «(.*)» - будь-яку кількість будь-яких символів). Наведене вище правило дозволяє приховати факт того, що сайт був створений з використанням технології ASP.NET. Фактична зміна імені файлу у файловій системі не виконується. Apache інтерпретує запис у режимі реального часу, виконує зворотну заміну «.php» на «.aspx» та викликає потрібний файл скрипта.

Інші можливості модуля:

  • Первинна фільтрація для підвищення безпеки;
  • Реалізація алгоритму кешування даних у файловій системі шляхом перенаправлення запитів;
  • Встановлення обмежень на завантаження певних файлів.

Віртуальні хости

Для повноцінного обслуговування одразу кількох різних сайтів на одному фізичному сервері було реалізовано механізм віртуал хостів. Він забезпечує незалежну одну від одної роботу декількох сайтів на одній IP адресі у межах одного фізичного сервера. Основні можливості:

  • Незалежна конфігурація модулів;
  • Обмеження доступу до певного контенту;
  • Особливий запуск httpd-процесу для кожного віртуального хостингу з наданням власних guid та uid;
  • Встановлення обмежень на використання ресурсів системи, трафік.

Часто, за допомогою модуля віртуал хостів реалізується послуга веб хостингу

Спільна робота Apache з Nginx

Apache – це не єдиний популярний веб-сервер. Головним конкурентом є NginX, представлений у 2004 році у вигляді ПЗ для вирішення c10k-проблеми (складність, що існувала на той момент, в обробці великої кількості запитів, що одночасно надходять).

Nginx – веб-сервер з подієво-орієнтованою архітектурою, що обробляє кожен новий запит в одному потоці. Він демонструє високу продуктивність (значно перевершує Apache) під час роботи зі статичним контентом. Ця особливість обумовлює спільне використання двох видів програмного забезпечення (зв'язок NginX + Apache). Перший виконує роль фільтру запитів, обробляючи запити на статичний контент самостійно та перенаправляючи запити інших типів на Apache.

Вибрати віртуальний хостинг

ІНШІ СТАТТІ ЗА ТЕМОЮ

Дякуємо, що обираєте FREEhost.UA