WEBサーバーをApache2.2で構築
目次
Apacheとは最も人気の高いWEBサーバソフトウェアの一つです。今回は、Apache2.2 でWEBサーバーを構築します。
2026年11月時点の補足:今の Debian の Apache は 2.4 です
この記事は Apache 2.2(2013年・Debian 5〜7)の手順です。Apache 2.2 は 2017年7月の 2.2.34 で開発が終わっていて、今の Debian に入るのは 2.4 です。Debian 13(trixie)の apache2 は 2.4.68(セキュリティ更新で 2.4.69)でした(Debian のパッケージ一覧(madison)・2026年11月5日に確認)。
| 項目 | この記事(Apache 2.2) | Debian 13(Apache 2.4) |
|---|---|---|
| 版 | 2.2.9 | 2.4.68 / 2.4.69 |
| 自分の設定を書く場所 | apache2.conf に直接追記 | /etc/apache2/conf-available/ に .conf を置いて a2enconf で有効化 |
| 設定の文法チェック | /etc/init.d/apache2 -t | apache2ctl configtest |
| 再起動 | /etc/init.d/apache2 restart | systemctl reload apache2(設定だけなら reload で足りる) |
| JavaScript の MIME | application/x-javascript | text/javascript(今のブラウザとサーバーが使う型) |
| Flash の MIME | application/x-shockwave-flash | 不要(Flash Player は 2020年末で配布終了) |
# vi /etc/apache2/conf-available/local-tuning.conf ← 記事の追記はここにまとめる
# a2enconf local-tuning
# apache2ctl configtest
Syntax OK
# systemctl reload apache2
apache2ctl の configtest は、設定ファイルの文法だけを確かめるコマンドです(apache2ctl の man ページ)。2.2 の /etc/init.d/apache2 -t と違い、問題がなければ「Syntax OK」と出ます。記事の ServerTokens ProductOnly は 2.4 でもそのまま使えます(Prod と同じ意味)。
Apache2.2(WEB)をインストール
// インストール
# apt-get install apache2
コンテンツの圧縮転送
Apache2モジュールのmod_deflateを使用すれば、サーバ→クライアントでやり取りするデータを圧縮することができ、トラフィック量の低減が期待できる。
// 有効化
# a2enmod deflate
// 編集
# vi /etc/apache2/apache2.conf
// 追記
<IfModule mod_deflate.c>
DeflateCompressionLevel 5 ← 圧縮率の設定(9:最高圧縮率)
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI _.utxt$ no-gzip
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rdf+xml
</IfModule>
// 圧縮したくない場合は、下記をバーチャルホスト毎に追加でもOK
<IfModule mod_deflate.c>
RemoveOutputFilter DEFLATE
</IfModule>
ブラウザキャッシュ機能を追加
// 有効化
# a2enmod expires
// 編集
# vi /etc/apache2/apache2.conf
// 追記
ExpiresActive On
ExpiresByType image/gif "access plus 15 minutes"
ExpiresByType image/jpeg "access plus 15 minutes"
ExpiresByType image/png "access plus 15 minutes"
ExpiresByType application/x-shockwave-flash "access plus 15 minutes"
ExpiresByType text/html "access plus 15 minutes"
ExpiresByType text/css "access plus 15 minutes"
アクセスURLを正規表現で書き換え機能を追加
// 有効化
# a2enmod rewrite
// サンプル(.htaccessに記述)
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
ログ出力を非同期にする
// 編集
# vi /etc/apache2/apache2.conf
// 追記
BufferedLogs On
HTTPレスポンスヘッダの Server ヘッダの情報を最小限にする
// 編集
# vi /etc/apache2/apache2.conf
// 追記
ServerTokens ProductOnly
ETagをオフにする
ロードバランサーを使用している場合、セキュリティー上消しておいた方がよい。
// 有効化
# a2enmod headers
// 編集
# vi /etc/apache2/apache2.conf
// 追記
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
設定ファイルのチェック
// チェック
# /etc/init.d/apache2 -t ← 2013年当時。今は apache2ctl configtest
----- OK例 -----
何も表示されなければOK。
----- NG例 -----
Syntax error on line 1 of /etc/apache2/apache2.conf:
Invalid command 'i', perhaps misspelled or defined by a module not included in the server configuration
Apache2を再起動(設定反映)
// 再起動
# /etc/init.d/apache2 restart
おまけ
Apache2のバージョン等を調べる。
// バージョン確認
# /usr/sbin/apache2 -V
// 出力内容
Server version: Apache/2.2.9 (Debian)
Server built: Dec 11 2010 18:57:44
Server's Module Magic Number: 20051115:15
Server loaded: APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture: 32-bit
Server MPM: Worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/worker"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT=""
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"