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

Apacheとは最も人気の高いWEBサーバソフトウェアの一つです。今回は、Apache2.2 でWEBサーバーを構築します。

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

----- 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"

読んで頂いて有り難うございます!