1.

Apache HTTP Server 完全ガイド — 設定・運用・モジュール

編集
この記事の要点
  • Apache HTTP Server(通称 httpd / Apache)は 1995 年〜現存する世界最古参の Web サーバ
  • 現在の主流は 2.4 系prefork / worker / event の 3 種類の MPM(Multi-Processing Module)
  • 主要モジュール: mod_rewrite(URL 書き換え)、mod_ssl(HTTPS)、mod_proxy(リバプロ)、mod_php / mod_wsgi
  • 設定は /etc/httpd/conf/httpd.conf(RHEL)または /etc/apache2/sites-available/(Debian)
  • 起動は apachectl start / systemctl start httpd、モジュール有効化は a2enmod(Debian)
  • .htaccess でディレクトリ単位の設定が可能。Nginx と比べてイベント駆動性能は劣るが機能が豊富で枯れている

Apache HTTP Server とは

Apache HTTP Server(通称 httpd / Apache)は、Apache Software Foundation が開発するオープンソースの Web サーバソフトウェアです。1995 年に NCSA HTTPd のフォークとして誕生し、約 30 年の歴史を持つ Web サーバの代表格。長年シェア No.1 を維持してきましたが、近年は Nginx に押されつつも、なお世界の Web サーバの 3 割前後を占めています。

項目内容
初版1995 年
開発元Apache Software Foundation (ASF)
ライセンスApache License 2.0
現行版2.4 系(2026 時点)
対応 OSLinux / BSD / macOS / Windows / Solaris ほか
言語C
サービス名RHEL 系: httpd / Debian 系: apache2

MPM(Multi-Processing Module)

Apache はリクエストの処理方式を MPM で切り替えられます。性能特性が大きく変わるので選定が重要:

MPM方式特徴用途
preforkプロセス × 1 リクエスト安定。スレッド非対応モジュール(mod_php)と相性◎PHP(mod_php)、互換性重視
workerプロセス + スレッドメモリ少なめ、スレッドセーフ要件あり静的 + 動的混在
eventworker 改良。Keep-Alive をイベント駆動大量同時接続に強い。2.4 のデフォルト高負荷リバプロ、API ゲートウェイ

主要モジュール

Apache はモジュール式で機能を追加します。代表例:

モジュール役割
mod_rewriteURL 書き換え(リダイレクト・SEO 用 URL)
mod_sslHTTPS / TLS 対応
mod_proxy / mod_proxy_httpリバースプロキシ
mod_headersHTTP ヘッダの追加・編集
mod_deflategzip 圧縮
mod_phpPHP を Apache プロセスに組込(prefork のみ)
mod_wsgiPython アプリ(Django/Flask)統合
mod_securityWAF(Web Application Firewall)
mod_status/server-status でメトリクス公開

インストール

# RHEL / CentOS / Rocky / AlmaLinux
sudo dnf install httpd
sudo systemctl enable --now httpd
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload

# Debian / Ubuntu
sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2

# macOS(標準同梱)
sudo apachectl start
# 設定: /etc/apache2/httpd.conf

# Windows(公式は Apache Lounge / XAMPP / Bitnami 経由)
# https://www.apachelounge.com/download/

設定ファイルの構造

ディストリビューションで配置が異なります:

系統メイン設定仮想ホストモジュール
RHEL 系/etc/httpd/conf/httpd.conf/etc/httpd/conf.d/*.conf/etc/httpd/conf.modules.d/
Debian 系/etc/apache2/apache2.conf/etc/apache2/sites-available/ + sites-enabled//etc/apache2/mods-available/ + mods-enabled/

Debian では有効化スクリプトが用意されています:

# モジュールの有効化 / 無効化
sudo a2enmod rewrite ssl headers proxy
sudo a2dismod cgi

# 仮想ホストの有効化 / 無効化
sudo a2ensite mysite.conf
sudo a2dissite 000-default.conf

# 設定反映
sudo systemctl reload apache2

典型的な仮想ホスト設定


    ServerName  example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example

    
        AllowOverride All
        Require all granted
    

    ErrorLog  ${APACHE_LOG_DIR}/example_error.log
    CustomLog ${APACHE_LOG_DIR}/example_access.log combined

    # HTTP → HTTPS リダイレクト
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]



    ServerName example.com
    DocumentRoot /var/www/example

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/example.com/privkey.pem

    # セキュリティヘッダ
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"

Nginx との比較

項目ApacheNginx
処理方式プロセス / スレッド(event MPM はイベント駆動)純粋イベント駆動
静的配信性能普通高速
.htaccessあり(ディレクトリ単位設定)なし(メイン conf のみ)
モジュール追加動的ロード可原則ビルド時組込
設定構文XML 風タグ独自ブロック構文
PHP 連携mod_php / PHP-FPMPHP-FPM のみ
得意分野動的サイト、複雑なリライト静的配信、リバプロ、高同時接続

PHP との連携: mod_php vs PHP-FPM

mod_php: Apache プロセスに PHP を組み込む。設定が楽だが、prefork 限定でメモリ消費大。

PHP-FPM: PHP を別プロセス(FastCGI)として常駐させ、Apache から mod_proxy_fcgi 経由で呼び出す。event MPM と組み合わせて高性能。Nginx 互換のデプロイ構成に。

# PHP-FPM 連携(推奨)

    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"

運用コマンド

# 起動・停止・再起動
sudo systemctl start httpd        # RHEL
sudo systemctl start apache2      # Debian
sudo apachectl start              # 共通

# 設定再読み込み(無停止)
sudo systemctl reload httpd
sudo apachectl graceful

# 構文チェック(reload 前に必須)
sudo apachectl configtest
sudo httpd -t

# 有効モジュール一覧
httpd -M
apache2ctl -M

# 仮想ホスト一覧
httpd -S

# バージョン
httpd -V

FAQ

Q: Apache と httpd は同じもの?
A: 同じです。httpd は Apache HTTP Server の実行ファイル名。RHEL 系ではサービス名としても httpd を使います。

Q: もう Apache は古い?
A: いいえ。2.4 event MPM + PHP-FPM なら Nginx と並ぶ性能が出ます。.htaccessmod_rewrite の柔軟性は依然強み。

Q: Apache と Tomcat は何が違う?
A: Apache HTTP Server は静的配信 + リバプロ、Tomcat はJava サーブレットコンテナ(アプリケーションサーバ)。役割が違うので、Apache + Tomcat の組み合わせもよく使われます。

編集
Post Share
子ページ
  1. インストール方法(Ubuntu)
  2. インストール方法(CentOS)
  3. ディレクトリ構造
  4. httpd.conf(設定ファイル)
  5. ドキュメントルートの変更方法
  6. .htaccess
  7. コマンド一覧
  8. エラー一覧
  9. VPSへの導入例(CentOS編)
  10. SSLの設定
  11. httpd.conf系のバーチャルホストの設定エラー有無確認方法
  12. .htaccessでベーシック認証
  13. configの文法チェック
同階層のページ
  1. Apache HTTP Server
  2. Apache Tomcat
  3. Nginx