[1分でわかる]Apacheってなんだ?
一言で言うと
世界で最も長く使われているWebサーバー。柔軟性と拡張性が強み。
Apacheとは
Apache HTTP Server(アパッチ)
1995年に登場した、世界初の本格的なオープンソースWebサーバー。
Apache Software Foundation が開発・維持。
20年以上にわたりWebサーバーのシェアNo.1だった
(現在はnginxと並ぶ)。
名前の由来
┌─────────────────────────────────────────────────────────┐
│ │
│ 「A patchy server」(パッチだらけのサーバー) │
│ │
│ NCSA HTTPd というサーバーに多くのパッチを当てて │
│ 作られたことから「A patchy(パッチィ)」→「Apache」 │
│ │
│ ※ ネイティブアメリカンの「アパッチ族」にも │
│ 敬意を込めているとも言われる │
│ │
└─────────────────────────────────────────────────────────┘
Apacheの特徴
┌─────────────────────────────────────────────────────────┐
│ │
│ ① .htaccess による柔軟な設定 │
│ → ディレクトリ単位で設定を変更可能 │
│ → サーバー再起動なしで設定反映 │
│ → 共有レンタルサーバーで重宝 │
│ │
│ ② 豊富なモジュール │
│ → mod_rewrite(URL書き換え) │
│ → mod_ssl(HTTPS) │
│ → mod_wsgi(Python連携) │
│ → mod_php(PHP連携) │
│ │
│ ③ 長い歴史と豊富なドキュメント │
│ → 問題が起きても情報が見つかりやすい │
│ → 書籍、チュートリアルが充実 │
│ │
└─────────────────────────────────────────────────────────┘
図解:Apacheの立ち位置
【静的ファイル配信】
ブラウザ ──→ Apache ──→ HTML/CSS/JS/画像
【PHP】
ブラウザ ──→ Apache ──→ mod_php ──→ PHPアプリ
【Python(mod_wsgi)】
ブラウザ ──→ Apache ──→ mod_wsgi ──→ Django/Flask
インストール
# Ubuntu / Debian
sudo apt update
sudo apt install apache2
# CentOS / RHEL(httpdという名前)
sudo dnf install httpd
# Mac (Homebrew)
brew install httpd
# 起動
sudo systemctl start apache2 # Ubuntu
sudo systemctl start httpd # CentOS
sudo systemctl enable apache2 # 自動起動
基本的な設定ファイル
【Ubuntu / Debian】
/etc/apache2/
├── apache2.conf # メイン設定
├── sites-available/ # サイト設定(有効化前)
├── sites-enabled/ # サイト設定(有効化後)
├── mods-available/ # モジュール(有効化前)
└── mods-enabled/ # モジュール(有効化後)
【CentOS / RHEL】
/etc/httpd/
├── conf/httpd.conf # メイン設定
├── conf.d/ # 追加設定
└── modules/ # モジュール
.htaccessの例
# /var/www/html/.htaccess
# URLリライト(mod_rewrite)
RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]
# ディレクトリ一覧を非表示
Options -Indexes
# BASIC認証
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
語呂合わせ
「Apache = ア・パッチ(継ぎ接ぎ)で歴史を紡ぐ」
多くのパッチを当てて進化してきた、歴史あるサーバー。
nginxとの比較
┌──────────────────┬─────────────────┬─────────────────┐
│ │ Apache │ nginx │
├──────────────────┼─────────────────┼─────────────────┤
│ 歴史 │ 1995年〜 │ 2004年〜 │
├──────────────────┼─────────────────┼─────────────────┤
│ アーキテクチャ │ プロセス/スレッド│ イベント駆動 │
├──────────────────┼─────────────────┼─────────────────┤
│ .htaccess │ ◎ 対応 │ × 非対応 │
├──────────────────┼─────────────────┼─────────────────┤
│ モジュール数 │ 非常に多い │ 少なめ │
├──────────────────┼─────────────────┼─────────────────┤
│ 同時接続 │ やや苦手 │ 得意 │
├──────────────────┼─────────────────┼─────────────────┤
│ 静的ファイル │ 高速 │ 超高速 │
├──────────────────┼─────────────────┼─────────────────┤
│ PHP連携 │ mod_phpで簡単 │ FastCGI経由 │
├──────────────────┼─────────────────┼─────────────────┤
│ 情報量 │ 非常に多い │ 多い │
└──────────────────┴─────────────────┴─────────────────┘
メリット・デメリット
┌─────────────────────────────────────────────────────────┐
│ 【メリット】 │
├─────────────────────────────────────────────────────────┤
│ ・.htaccessで柔軟に設定変更 │
│ ・モジュールが豊富(何でもできる) │
│ ・長い歴史、ドキュメント・情報が豊富 │
│ ・PHPとの相性が抜群 │
│ ・レンタルサーバーのほとんどがApache │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 【デメリット】 │
├─────────────────────────────────────────────────────────┤
│ ・大量の同時接続でメモリ消費が大きい │
│ ・nginxより静的ファイル配信が遅い │
│ ・設定が複雑になりがち │
│ ・.htaccessのパースがオーバーヘッドになることも │
└─────────────────────────────────────────────────────────┘
まとめ
| 項目 | 内容 |
|---|---|
| 正式名称 | Apache HTTP Server |
| 読み方 | アパッチ |
| 強み | 柔軟性、豊富なモジュール、.htaccess |
| 定番構成 | Apache + mod_wsgi + Django |
| 設定ファイル | /etc/apache2/ または /etc/httpd/ |
次回は「uWSGI」─ 高機能なWSGIサーバー