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/\ [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"
