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"