この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:7
ページ更新者:atom
更新日時:2026-06-10 11:03:32

タイトル: Apache HTTP Server
SEOタイトル: 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 の組み合わせもよく使われます。