がらくたネット


Apache2系

Apache2系

標準Webサーバーとして定番のapacheにはVer1系とVer2系がある

現在はVer2系が一般的

apache2.0の新機能の一部

  • 多言語対応のエラーメッセージ
  • マルチスレッド対応

 既定ではpreforkとなり従来の1.3系と同様マルチプロセスのみ  他にworker(マルチスレッド/マルチプロセスで各プロセスに決められたスレッドが動作)と  perchild(マルチスレッド/マルチプロセスで各プロセスに個別ユーザIDを割り付け可能)がある  configure時に –with-mpm=[タイプ] をする必要あり

  • apacheのバーチャルホスト

 バーチャルホストに設定するために追加するモジュールはない  1.3系ではmod_vhostsが必要であった  

  • NAMEベース 1つのIPアドレスで実現
  • Webブラウザが送るホスト名で区別

 DNSにCNAMEでホストを登録 httpd.confにNameVirtualHost <IPアドレス>を追加

 <VirtualHost IPアドレス>SeerverName(必須)
  ホスト名 DocumentRoot(必須)
  コンテンツディレクトリ ServerAdmin
  管理者メールアドレス ErrorLog
  エラーログファイル名 TransferLog
  アクセスログファイル名
 </VirtualHost>を記述
 ここでVirtualHostに指定するIPアドレスは全て同一となる

  • 一番初めに記述したVirtualHostディレクティブがデフォルト設定となり

 IPアドレスでアクセスしてきたWebブラウザはこのディレクティブの設定に従う。  

  • IPベース

 複数のIPを単一のapacheで処理 IPアドレスでホストを区別  DNSにAレコードをIPアドレス分だけ登録  httpd.confに

 <VirtualHost IPアドレス>SeerverName(必須)
  ホスト名 DocumentRoot(必須)
  コンテンツディレクトリ
  ServerAdmin 管理者メールアドレス
  ErrorLog エラーログファイル名
  TransferLog アクセスログファイル名
 </VirtualHost>を記述
 BindAddressにはIPアドレスを数分登録  もしくはBindAddress *としてワイルドカード登録してもOK

SSL化

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

ab

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: 0
Failedがある場合は、同時接続数の限界を超えているかサーバ側の処理が追いついていないか。

リクエストの処理時間

Requests per second: YYYY.ZZ [#/sec] (mean)
Time per request: 0.XXX [ms] (mean, across all concurrent requests)
上は1秒間に処理できた数、下は1つの処理に要した時間

Apacheのstatus

mod_statsが必要
configure時に–snable-module=statusとすればインストールされる httpd.confの<Location server-status>をコメントアウトして Allow formに参照許可するホストを記述 Webブラウザからこのディレクトリにアクセスする