apache 2.2.3 + mod_ssl +
環境 +
- OS
- CentOS 5.5 (kernel 2.6.18-194.3.1.el5)
- パッケージ
- httpd-2.2.3-43.el5.centos.3
- mod_ssl-2.2.3-43.el5.centos.2
apacheのインストール +
apacheのインストール +
- apacheのインストール
# yum install httpd
- apache用のSSLモジュールをインストール
# yum install mod_ssl
apacheの設定 +
httpd.confの編集 +
- apacheの設定ファイル「/etc/httpd/conf/httpd.conf」を編集します。
行数はあくまで目安です。
# vi /etc/httpd/conf/httpd.conf #44行目 ヘッダ情報にapacheのパージョンなどを含めないよう制限します ServerTokens Prod #265行目 サーバ名を設定します ServerName www.oss-d.net:80 #329行目「/var/www/html」以下のディレクトリでhtaccessを有効にします AllowOverride All #392行目 インデックスファイルの指定 DirectoryIndex index.html index.html.var #524行目 エラーページの設定(サーバのバージョンやホスト名を出力しない) ServerSignature On #748行目 デフォルトの文字コードを指定します AddDefaultCharset UTF-8
ssl.confの編集 +
- apacheのSSL設定ファイル(/etc/httpd/conf.d/ssl.conf)を編集します
# vi /etc/httpd/conf.d/ssl.conf #112行目 httpsdの使用する公開鍵の場所(基本的にデフォルト) SSLCertificateFile /etc/pki/tls/certs/localhost.crt #119行目 httpsd の使用する秘密鍵の場所(基本的にデフォルト) SSLCertificateKeyFile /etc/pki/tls/private/localhost.key #134行目 中間証明書の場所を指定します。利用するCAによっては設定が必要になります。 # 今回はCAを利用せず、自己証明書を利用するため設定しません。 #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt #225行目 ログの出力形式 CustomLog logs/ssl_access_log combined
秘密鍵と証明書の作成 +
秘密鍵「localhost.key」と自己署名証明書「localhost.crt」を作成します。
- 自己署名証明書は商用サービスなどの第三者がアクセスする環境で利用しないで下さい。
- 第三者がアクセスする場合は、CAから発行された証明書を利用して下さい。
- カレントディレクトリを変更します。
# cd /etc/pki/tls
- 秘密鍵を生成します。
# openssl genrsa -des3 2048 -rand /var/log/ > private/localhost.key
「Enter PEM pass phrase:」と表示されるので、パスフレーズを入力すると暗号化のための秘密鍵(localhost.key)が生成されます。
- 秘密鍵からパスフレーズを削除します。
「Enter pass phrase for private/localhost.key:」と表示されるので、先ほどのパスフレーズを入力します。# openssl rsa -in private/localhost.key -out private/localhost.key Enter pass phrase for private/localhost.key: writing RSA key
- 生成された秘密鍵を使って自己署名証明書を発行します(Common NameはURLでのホスト名を入力)
# openssl req -new -x509 -key private/localhost.key -out certs/localhost.crt -days 3650 ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:www.oss-d.net Email Address []:
起動確認 +
自動起動の設定 +
- chkconfigコマンドで自動起動をONにします
# chkconfig httpd on
起動確認 +
- apacheを起動します。
# /etc/init.d/httpd start
- psコマンドでプロセスの確認します。/usr/sbin/httpdがあれば問題ありません。
# ps ax|grep http 1747 ? S 0:00 /usr/sbin/httpd 1900 ? S 0:00 /usr/sbin/httpd 1923 ? Ss 0:00 /usr/sbin/httpd
動作確認 +
- ブラウザでアクセスします。
(www.oss-d.netの部分は環境に合わせて変更して下さい)
https://www.oss-d.net
- apacheのテストページが表示されればインストール完了です。
チューニング +
apacheのチューニング +
プロセスの設定 +
- 多数のリクエストを同時処理できるよう、待ち受けプロセスに関する設定を見直します。
一般的にプロセス数が多いほど性能はあがりますが、その分メモリを多く消費します。
# vi /etc/httpd/conf/httpd.conf <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
※prefork MPM での最大プロセス数は「MaxClients」+「MaxSpareServers」となる。設定項目 説明 StartServers 起動時のプロセス数。起動直後から多数のアクセスがある場合はプロセス数を増やします。 MinSpareServers 待機プロセスの最小数。下回った場合は待機プロセスを起動させます。 MaxSpareServers 待機プロセスの最大数。上回った場合は待機プロセスを終了させます。 ServerLimit MaxClientsの最大値。MaxClientsと同じ値を設定します。(prefork MPM の場合は「同時クライアント数 = サーバプロセス数」のため) MaxClients 処理可能な同時リクエスト数。prefork MPM では処理可能な最大プロセス数となる。待機プロセスはこの中に含まれない。 MaxRequestsPerChild 1プロセスが処理するリクエスト数。メモリリーク対策のためリクエスト数を超えたプロセスは終了します。
KeepAliveの設定 +
- Apacheはリクエスト単位でTCP接続のオープン/クローズを行いますがKeepAliveを有効にすると、
1つのTCP接続で複数の要求を処理する事が可能になり、TCP接続を確立するためのオーバヘッドが削減されます。
# vi /etc/httpd/conf/httpd.conf KeepAlive On MaxKeepAliveRequests 10 KeepAliveTimeout 15
設定項目 説明 KeepAlive KeepAliveの有効、無効を設定する MaxKeepAliveRequests 1つのTCP接続で処理できるリクエスト数 KeepAliveTimeout 1つのTCP接続が保持される時間。時間を超えると切断される。
モジュールのアンロード +
- 不要なモジュールは性能低下に繋がるため、httpd.confでロードしないように設定します
# vi /etc/httpd/conf/httpd.conf ##不要なモジュールがあればコメントにします。 LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so : : LoadModule version_module modules/mod_version.so
- ロード中のモジュールは下記コマンドで確認できます
# httpd -M
