Apache HTTP Server

Apache HTTP Server（アパッチ エイチティーティーピー サーバ）は、Apache License2.0の条件でリリースされるフリーでオープンソースのクロスプラットフォームのWebサーバソフトウェアである。Apache はApacheソフトウェア財団の支援のもと、開発者のオープンコミュニティによって開発・保守されている。
Apache HTTP サーバのインスタンスの大部分は Linuxディストリビューション上で動作するが、現在のバージョンは Microsoft Windows や様々な Unixライクなシステム上でも動作する。過去のバージョンでは、OpenVMS、NetWare、OS/2、メインフレームへの移植を含む他のオペレーティングシステムでも動作した。
元々は NCSA HTTPdサーバをベースにしていたが、NCSAコードの作業が停滞した後、1995 年初頭にApache の開発が始まった。Apache はWorld Wide Webの最初の成長において重要な役割を果たし、支配的な HTTP サーバとしてすぐに NCSA HTTPd を追い抜き、1996 年 4 月以来、最も人気のあるサーバであり続けている。2009年には、1億以上のウェブサイトにサービスを提供する最初のウェブサーバーソフトウェアとなった。2020年4月現在、Netcraftの推定では、Apacheは最もアクセスの多い100万のウェブサイトの29.12％のサーバーで利用され、Nginxは25.54％で利用されている。W3Techsによると、Apacheは上位1000万サイトの39.5％で利用され、Nginxは31.7％で利用されている。
特徴.
サポート.
2018年3月現在、Apacheの公式ページでは2.4系のみを推奨リリースとしている 。
1.3系、2.0系、2.2系を含む古い系列は、アーカイブ・サイトからダウンロードできる。
モジュールによる機能追加.
Apacheの機能はモジュールを追加することで拡張できる。Apacheの核となる「Core」がまずあり、そこへモジュールを追加して機能を拡張する。モジュール名は慣習的に「mod_XXX」と付けられる。XXXは機能の概要名である。例えば「mod_dir」「mod_alias」「mod_setenvif」などとなる。
モジュールは「静的リンク」または「動的リンク」により追加できる。静的リンクとは、Apacheの実行ファイルそのものにモジュールを組み込む方式である。つまりApacheとモジュールはバイナリ的に一体化して動作する。動的リンクとは、モジュールを別ファイルとして作成し、必要に応じてモジュールのファイルから機能を呼び出す方式である。この機能を「DSO（Dynamic Shared Object＝動的共有オブジェクト）」と呼ぶ。動的リンクの機能を利用するためには、あらかじめ「mod_so」モジュールを静的リンクしておく必要がある。
動的リンクはモジュール機能の呼び出しで静的リンクよりも負荷が高くなる（オーバーヘッドがかかる）デメリットがあるが、再起動のみでモジュールを組み入れたり外したりできるメリットがある。
逆に静的リンクは高速にモジュール機能を呼び出せるが、モジュールを入れたり外すためにはApache本体を再コンパイルする必要がある。
プロセスの挙動 (MPM).
Apacheは数多くのOSをサポートするために、MPM（マルチ プロセッシング モジュール）という仕組みをとっている。これにより、利用するOSに最適化されたApacheを容易に組み込むことができる。
Unix系においては、プロセス・スレッドの挙動が異なる3つのMPMが利用できる。
このほか、Netware、OS/2、Windows向けにそれぞれ専用のMPMが用意されている。
利用形態.
Apacheは、主にワールドワイドウェブ上で静的または動的なコンテンツを公開するために使われる。多くのウェブアプリケーションは、Apacheが提供する環境と機能を想定して設計されている。また、ApacheはLAMP (Linux、Apache、MySQL、PHP/Perl/Python) や LAPP (Linux、Apache、PostgreSQL、PHP/Perl/Python) と呼ばれる非常に人気のあるウェブサーバコンポーネントの一つでもある。読み方はそれぞれLAMP（ランプ）、LAPP（ラップ）である。さらに、Apacheはいろいろな商用パッケージ、例えばOracle Databaseに組み込まれており、macOSやNetWare 6.5の標準Webサーバにもなっている。
特殊な形態.
Apacheでは、FreeBSDのカーネルと連動し、最高の性能を引き出す特殊な動作形態をサポートしている。
これはFreeBSDをHTTPサーバに特化するという運用形態を想定したもので、FreeBSD及びApacheの両者に設定が必要であり、共にインストール直後の標準設定ではサポートされない。
基本的な動作は、LinuxのTUX web serverやWindowsのInternet Information Servicesなどに近い実装であり、通信バッファのカーネルからの直接的な読込やkqueueなど多岐にわたり、一部のみ利用ということも可能になっている。