Apache

**Apache HTTP-сервер** — еркін веб-сервер.

Apache — кроссплатформалы бағдарламалық қамтамасыз ету, Linux, BSD, macOS, Microsoft Windows, Novell NetWare, BeOS операциялық жүйелерін қолдайды.

Apache-тің негізгі артықшылықтарына сенімділігі мен баптаудағы икемділігі жатады. Ол сыртқы модульдерді қосу арқылы деректерді ұсынуға, пайдаланушыларды аутентификациялау үшін дерекқор басқару жүйесін пайдалануға, қате туралы хабарламаларды өзгертуге және т.б. мүмкіндік береді.

## Тарихы
Сервер алғаш рет 1995 жылдың басында жазылды. Оның атауы ағылшын тіліндегі әзілге құрылған «a patchy [server]» («жамаулы сервер») тіркесінен шыққан деп саналады. Өйткені ол сол кезде танымал болған NCSA HTTPd 1.3 серверіндегі қателерді түзетті. Кейінірек, 2.x нұсқасынан бастап, сервер толығымен қайта жазылды және NCSA кодын енді қамтымайды.

Қазіргі кезде әзірлеу 2.4 тармағында жүргізіліп жатыр, ал 1.3, 2.0 және 2.2 нұсқаларында тек қауіпсіздік қатесін түзету жұмыстары ғана атқарылады. Соңғы тұрақты нұсқа — 2.4.62 (2024 жылғы 17 шілде), ал 1.x тармағы үшін соңғысы — 1.3.42.

Apache веб-серверін Apache Software Foundation қорының қолдауымен ашық қауымдастық әзірлейді және ол көптеген бағдарламалық өнімдерге енгізілген, олардың қатарында Oracle СУБД және IBM WebSphere бар.

1996 жылғы сәуірден бастап бүгінгі күнге дейін Интернеттегі ең танымал HTTP-сервер болып саналады. Netcraft статистикасына сәйкес:

* 2007 жылғы тамызда барлық веб-серверлердің 51 %-ында жұмыс істеді;
* 2009 жылғы мамырда — 46 %;
* 2011 жылғы қаңтарда — 59 %, яғни 160 млн-нан астам сайтта;
* 2016 жылғы қаңтарда — 33,56 %, яғни 304 млн-нан астам сайтта.

Мысалы, Ресейде Apache нарықтың шамамен 17,45 %-ын қамтыды. Ол ең танымал веб-серверлердің бірі, nginx серверінен кейінгі екінші орында (нарықтағы үлесі — 64,89 %).

## Архитектурасы

### Ядро
Apache ядросы негізгі функцияларды қамтиды: конфигурациялық файлдарды өңдеу, HTTP протоколын қолдау және модульдерді жүктеу жүйесі.

Ядро, модульдерден айырмашылығы, толығымен Apache Software Foundation тарапынан әзірленеді.

Теориялық тұрғыда Apache ядросы модульсіз де жұмыс істей алады, бірақ мұндай жағдайда функционалдығы өте шектеулі болады.

Ядро толықтай C бағдарламалау тілінде жазылған.

### Конфигурация жүйесі
Apache конфигурациясы мәтіндік конфигурациялық файлдарға негізделген. Үш деңгейлі конфигурация қолданылады:

* Сервер конфигурациясы (httpd.conf):
** бүкіл Apache процесін басқару (глобалды орта);
** «негізгі» немесе «әдепкі» серверді баптау;
** виртуалды хосттарды баптау (бір сервер бірнеше IP-адреске немесе домендік атауға жауап бере алады).
* Виртуалды хост конфигурациясы (httpd.conf, 2.2 нұсқасынан бастап — extra/httpd-vhosts.conf).
* Каталог деңгейіндегі конфигурация (.htaccess).

Конфигурация файлдары директивалар блоктарына негізделген жеке тілде жазылады. Ядроның барлық дерлік параметрлерін осы файлдар арқылы өзгертуге болады.

## Функционалдық мүмкіндіктері

### Бағдарламалау тілдерімен интеграция
Apache-ке көптеген модульдер қосылып, әртүрлі бағдарламалау тілдерін қолдауға мүмкіндік береді. Олардың қатарына:

* PHP (mod_php),
* Python (mod_python, mod_wsgi),
* Ruby (apache-ruby),
* Perl (mod_perl),
* ASP (apache-asp),
* Tcl (rivet).

Сонымен қатар CGI және FastCGI қолдайды, бұл оны дерлік барлық тілдермен (C, C++, Lua, sh, Java және т.б.) үйлесімді етеді.

### Қауіпсіздік
Apache деректерге қолжетімділікті шектеу және қорғау үшін әртүрлі механизмдерге ие:

* каталогтар мен файлдарға қолжетімділікті шектеу;
* пайдаланушыны HTTP-аутентификация немесе digest-аутентификация арқылы тексеру;
* IP-мекенжай бойынша серверге немесе каталогқа қолжетімділікті шектеу;
* белгілі бір файл түрлеріне (мысалы, конфигурация немесе дерекқор файлдарына) кіруге тыйым салу;
* деректерді SSL (OpenSSL арқылы) көмегімен шифрлау;
* X.509 сертификаттарын пайдалану.

Қосымша қауіпсіздік үшін mod_security сияқты сыртқы модульдер бар.

### Интернационализация
2.0 нұсқасынан бастап сервер пайдаланушының локалін анықтап, қате хабарламаларын әртүрлі тілдерде көрсете алады. Apache көптеген кодировкаларды, соның ішінде **Unicode**-ты қолдайды.

### Оқиғаларды өңдеу
Әкімші кез келген HTTP-қателерге (мысалы, 404 — «Табылмады», 403 — «Тыйым салынған») арналған жеке беттер мен скрипттерді орната алады.

## Сілтемелер

* Ресми сайты (ағылш.)

Санат:Веб-серверлер