標準Webサーバーとして定番のapacheにはVer1系とVer2系がある
現在はVer2系が一般的
既定ではpreforkとなり従来の1.3系と同様マルチプロセスのみ 他にworker(マルチスレッド/マルチプロセスで各プロセスに決められたスレッドが動作)と perchild(マルチスレッド/マルチプロセスで各プロセスに個別ユーザIDを割り付け可能)がある configure時に –with-mpm=[タイプ] をする必要あり
バーチャルホストに設定するために追加するモジュールはない 1.3系ではmod_vhostsが必要であった
DNSにCNAMEでホストを登録 httpd.confにNameVirtualHost <IPアドレス>を追加
<VirtualHost IPアドレス>SeerverName(必須) ホスト名 DocumentRoot(必須) コンテンツディレクトリ ServerAdmin 管理者メールアドレス ErrorLog エラーログファイル名 TransferLog アクセスログファイル名 </VirtualHost>を記述ここでVirtualHostに指定するIPアドレスは全て同一となる
IPアドレスでアクセスしてきたWebブラウザはこのディレクティブの設定に従う。
複数のIPを単一のapacheで処理 IPアドレスでホストを区別 DNSにAレコードをIPアドレス分だけ登録 httpd.confに
<VirtualHost IPアドレス>SeerverName(必須) ホスト名 DocumentRoot(必須) コンテンツディレクトリ ServerAdmin 管理者メールアドレス ErrorLog エラーログファイル名 TransferLog アクセスログファイル名 </VirtualHost>を記述BindAddressにはIPアドレスを数分登録 もしくはBindAddress *としてワイルドカード登録してもOK
ApacheのSSL化 mod_sslとApache-SSLがある
mod_sslはApacheモジュールで、Apache-SSLはパッチの扱い。
ベースプログラムはOpenSSLとSSLeayがある。
それぞれ差異はほとんどない。
Apache+mod_ssl+OpenSSLが一般的。
OpenSSLのコンパイル・インストール mod_sslのコンパイル
ここでApacheのコンパイルも行っている。
apacheのインストール SSLは公開鍵PublicKeyと秘密鍵PrivateKeyがある。 それと共通鍵の概念がある。
独自認証機関CAと証明書
cacert.pem、秘密鍵
cakey.pem CA.sh -newca
サーバの鍵ファイルserverkey.pem作成
openssl genrsa 鍵ファイルで認証機関用の申請書
CSRcsr.pem作成
openssl req -new 認証機関での鍵ファイルへ署名し証明書cert.pem作成
openssl ca httpd.confの修正
SSLCertificateFileにサーバの署名付き証明書ファイル
SSLCertificateKeyFileにサーバの鍵ファイル
apachectl startsslでSSLモードでApacheを起動 パスフレーズの解除
# /usr/local/ssl/bin/openssl rsa -in /usr/local/ssl/serverkey.pem-out /usr/local/ssl/serverkey.pem
Apache純正ベンチマークソフト ab(Apache Bench)
ab [option] <URL>
同時接続数100、リクエスト数1000までindex.htmlにアクセスする場合は
ab -n 1000 -c 100 index.html
-n | リクエスト数 |
-c | 同時接続数 |
単一かつ同一のファイルしかリクエストできないので注意が必要。 同時接続数についても端末で発生可能な数には限界があるはず。
結果について
リクエストの成否
Complete requests: 1000 Failed requests: 0Failedがある場合は、同時接続数の限界を超えているかサーバ側の処理が追いついていないか。
リクエストの処理時間
Requests per second: YYYY.ZZ [#/sec] (mean) Time per request: 0.XXX [ms] (mean, across all concurrent requests)上は1秒間に処理できた数、下は1つの処理に要した時間
mod_statsが必要
configure時に–snable-module=statusとすればインストールされる
httpd.confの<Location server-status>をコメントアウトして
Allow formに参照許可するホストを記述
Webブラウザからこのディレクトリにアクセスする