サーバー構築

WEBサーバーをApache2.2で構築

WEBサーバーをApache2.2で構築
目次
  1. Apache2.2(WEB)をインストール
  2. コンテンツの圧縮転送
  3. ブラウザキャッシュ機能を追加
  4. アクセスURLを正規表現で書き換え機能を追加
  5. ログ出力を非同期にする
  6. HTTPレスポンスヘッダの Server ヘッダの情報を最小限にする
  7. ETagをオフにする
  8. 設定ファイルのチェック
  9. Apache2を再起動(設定反映)
  10. おまけ

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.92.4.68 / 2.4.69
自分の設定を書く場所apache2.conf に直接追記/etc/apache2/conf-available/ に .conf を置いて a2enconf で有効化
設定の文法チェック/etc/init.d/apache2 -tapache2ctl configtest
再起動/etc/init.d/apache2 restartsystemctl reload apache2(設定だけなら reload で足りる)
JavaScript の MIMEapplication/x-javascripttext/javascript(今のブラウザとサーバーが使う型)
Flash の MIMEapplication/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"