Apache HTTP Server

Apache HTTP Server
ТипВебсервер
АвторRobert McCoold
РозробникApache Software Foundation
Стабільний випуск2.4.23 (4 липня 2016; 8 років тому (2016-07-04))
Операційна системаКрос-платформовий
Мова програмуванняC[1][2][…]
ЛіцензіяApache Software License
Репозиторійhttps://github.com/apache/httpd, https://svn.apache.org/viewvc/httpd/httpd/
Вебсайтhttpd.apache.org

Apache HTTP-сервер (вимовляється /ə.ˈpæ.ʧi/) — відкритий вебсервер Інтернет для UNIX-подібних, Microsoft Windows, Novell NetWare та інших операційних систем.

Apache розроблюється та підтримується спільнотою розробників відкритого програмного забезпечення під керівництвом Apache Software Foundation.

В 1996 році Apache обійшов NCSA HTTPd із того часу є найбільш популярним вебсервером у світі. Станом на червень 2013 року Apache встановлений на 53.34 % (358 974 045 серверів) для порівняння на другому місці Microsoft IIS їхня частка 17.22 % (115 920 681 сервер).[4]

Історія та назва

[ред. | ред. код]

Сервер Apache створений на початку 1995 року співтовариством незалежних розробників «Apache Group», члени якої у свій час брали участь у проєкті з побудови перших Web-серверів у NCSA (National Center for Supercomputer Applications, USA). «Apache Group» пропонує Web-сервери, сумісні з будь-якою UNIX-системою, установленої на будь-якій апаратній платформі. Сервер перенесений і на інші операційні системи. Так, уже зараз Apache Web-сервер доступний для OS/2, UNIX-платформ, Windows 2000 та ін.

Web-сервер Apache, як і всі інші Web-сервери, базується на ідеях і частині коду, реалізованих у першому по-справжньому популярному Web-Сервері — NCSA httpd 1.3.

Є два пояснення назви проєкту. Згідно з Apache Foundation, назву проєкту було вибрано з поваги до корінного племені американського континенту апачів, що були відомі за свою витривалість та військову майстерність. Проте, перший FAQ на вебсайті проєкту Apache Server з 1996 до 2001 стверджував, що «назва „Apache“ походить від абревіатури „А PAtCHy server“, що дослівно перекладається як „залатаний сервер“ — сервер, у код якого внесений цілий ряд серйозних змін.» Перше пояснення було підтверджено на Конференції Apache і в інтерв'ю 2000 року з Браяном Беглендорфом, який, тим не менш, спростував це твердження в інтерв'ю 2007 року, заявляючи, що «сервер Apache не названий на честь племені Джеронімо».

Версія 2 вебсервера Apache була істотним переписом великої частини коду програми версії 1.x, з сильним нахилом на подальшу модульність та портативність. Версія 2.2 має гнучкіший API авторизації. Вона також включає поліпшені модулі кешу й проксі сервера.

Можливості

[ред. | ред. код]

Web-сервер Apache є самостійним, некомерційним, вільно розповсюджуваним продуктом. Продукт підтримує безліч можливостей, багато з яких реалізовані як скомпільовані модулі, які розширюють основні функціональні можливості. Вони різняться від серверної підтримки мов програмування до схем аутентифікації. Існують інтерфейси для підтримки мов програмування Perl, Python, Tcl і PHP.

Популярні методи стискування на Apache включають зовнішній модуль mod_gzip, створений для зменшення розміру вебсторінок, переданих по HTTP.

Функції віртуального хостингу дозволяють одній інсталяції Apache обслуговувати різні вебсайти. Наприклад, одна машина, з однією інсталяцією Apache може одночасно містити www.example.com, www.test.com, test47.test-server.test.com і так далі.

Використання

[ред. | ред. код]

Apache передусім використовується для передачі через HTTP статичних та динамічних вебсторінок у всесвітній павутині. Багато вебзастосунків спроєктовано, зважаючи на середовище і можливості, які надає цей вебсервер.

Продукт може працювати як кешувальний проксі-сервер, що дозволяє істотно підвищити продуктивність роботи користувачів локальної мережі при роботі з документами, розташованими в Інтернет. Можна задавати такі параметри та налаштування проксі-сервера:

  • типи файлів, які необхідно кешувати або навпаки, не включати в кеш;
  • максимальний обсяг дискового простору, відведений під кеш;
  • періодичний перегляд і індексування бази даних кешу з метою вивільнення дискового простору шляхом видалення застарілих об'єктів.

Apache зіграв ключову роль у початковому зростанні всесвітньої павутини, і продовжує бути найпопулярнішим у світі вебсервером, де-факто платформою, на яку орієнтуються інші вебсервери.

Відповідно до статистики[5] Netcaft за червень 2008 року, Apache є найпоширенішим серверним програмним забезпеченням в Мережі: на цей вебсервер припадала частка близько 49 % відповідного сегменту ринку (майже 85 мільйонів сайтів). Друге місце за популярністю займають програмні платформи Microsoft — 35,4 % (61 мільйон сайтів).

Архітектура

[ред. | ред. код]

Ядро Apache включає в себе основні функціональні можливості, такі як обробка конфігураційних файлів, протокол HTTP і система завантаження модулів. Ядро (на відміну від модулів) повністю розробляється Apache Software Foundation, без участі сторонніх програмістів.

Теоретично, ядро apache може функціонувати в чистому вигляді, без використання модулів. Однак, функціональність такого рішення вкрай обмежена.

Ядро Apache повністю написано мовою програмування C.

Система конфігурації

[ред. | ред. код]

Система конфігурації Apache заснована на текстових конфігураційних файлах. Має три умовних рівні конфігурації:

  • Конфігурація сервера (httpd.conf).
  • Конфігурація віртуального хосту (httpd.conf з версії 2.2 extra/httpd-vhosts.conf).
  • Конфігурація рівня директорії (.htaccess).

Має власну мову конфігураційних файлів, заснований на блоках директив. Практично всі параметри ядра можуть бути змінені через конфігураційні файли. Більша частина модулів має власні параметри.

Частина модулів використовує у своїй роботі конфігураційні файли операційної системи (наприклад /etc/passwd і /etc/hosts).

Крім цього, параметри можуть бути задані через ключі командного рядка.

Мультипроцесувальні моделі (MPM)

[ред. | ред. код]

Для вебсервера Apache існує безліч моделей симетричного мультипроцесування.

Ось основні з них:

Назва Розробник Підтримувані OS Опис Призначення Статус
worker [Архівовано 4 березня 2012 у Wayback Machine.] Apache Software Foundation Linux, FreeBSD Гібридна мультипроцесорна-багатониткова модель. Зберігаючи стабільність мультипроцесорних рішень, вона дозволяє обслуговувати велику кількість клієнтів з мінімальним використанням ресурсів. Середньо-навантажені вебсервери. Стабільний.
pre-fork [Архівовано 13 березня 2012 у Wayback Machine.] Apache Software Foundation Linux, FreeBSD MPM, заснована на попередньому створенні окремих процесів, не використовує механізм threads. Велика безпека і стабільність за рахунок ізоляції процесів один від одного, збереження сумісності зі старими бібліотеками, що не підтримують threads. Стабільний.
perchild [Архівовано 23 лютого 2012 у Wayback Machine.] Apache Software Foundation Linux Гібридна модель, з фіксованою кількістю процесів. На високо навантажених серверах, можливість запуску дочірніх процесів використовуючи інше ім'я користувача для підвищення безпеки. У розробці, нестабільний.
netware [Архівовано 15 січня 2012 у Wayback Machine.] Apache Software Foundation Novell NetWare Багатониткова модель, оптимізована для роботи в середовищі NetWare. Сервери Novell NetWare Стабільний.
winnt [Архівовано 4 березня 2012 у Wayback Machine.] Apache Software Foundation Microsoft Windows Багатониткова модель, створена для операційної системи Microsoft Windows. Сервери під керуванням Windows Server. Стабільний.
Apache-ITK [Архівовано 7 березня 2012 у Wayback Machine.] Steinar H. Gunderson Linux, FreeBSD MPM, заснована на моделі prefork. Дозволяє запуск кожного віртуального хоста під окремими UID та GID. Хостингові сервери, сервери, критичні до ізоляції користувачів і обліку ресурсів. Стабільний.
peruser [Архівовано 13 вересня 2012 у Wayback Machine.] Sean Gabriel Heacock Linux, FreeBSD Модель, створена на базі MPM perchild. Дозволяє запуск кожного віртуального хоста під окремими UID та GID. Не використовує нитки. Забезпечення підвищеної безпеки, робота з бібліотеками, не підтримуються нитки. Стабільна версія від 4 жовтня 2007 року, експериментальна — від 10 вересня 2009 року.

Примітки

[ред. | ред. код]
  1. http://linuxdocs.org/HOWTOs/Apache-Overview-HOWTO-12.html
  2. https://github.com/apache/httpd
  3. The apache Open Source Project on Open Hub: Languages Page — 2006.
  4. [Статистика вживаності вебсерверів(англ.). Архів оригіналу за 6 серпня 2013. Процитовано 5 серпня 2013. Статистика вживаності вебсерверів(англ.)]
  5. June 2008 Web Server Survey. Архів оригіналу за 28 липня 2008. Процитовано 28 липня 2008.

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]