Web サーバの設定

Web
Web サーバの設定
■ Apache のインストール
Apache をインストールするには、
RPM や deb などディストリビューションごとのパッケージを利
用する方法と、ソースからコンパイルする方法があります。ソースからインストールする場合
は、一般的なソフトウェアのインストールと同様に、configure ∼ make ∼ make install を実行しま
す。configure スクリプトでは、さまざまオプションを指定できます。
オプション
説明
--prefic= ディレクトリ
インストール先ディレクトリの指定
--sysconfdir= ディレクトリ
設定ファイルのインストール先ディレクトリ
--logfilrdir= ディレクトリ
ログファイルのインストール先ディレクトリ
--enable-module= モジュール
標準モジュールを組み込む
--disable-module= モジュール
標準モジュールを組み込まない
--enable-shared= モジュール
標準モジュールを DSO で組み込む
--disable-module= モジュール
標準モジュールを DSO で組み込まない
次の例では、インストール先ディレクトリを /usr/local/apache にし、info モジュールを有効にして
います。
$ ./configure --prefix=/usr/local/apache --enable-module=info
■ Apache の設定
Apache の設定ファイルは、httpd.conf です。この設定ファイルは、/etc/httpd/conf ディレクトリ以下
に配置されます ( ディストリビューションによって異なります )。httpd.conf では次の書式で設定
値を記述します。
< 書式 >
ディレクティブ名 設定値
以下の例では、DocumentRoot ディレクティブに「/var/www/html」という値を設定しています。
DocumentRoot /var/www/html
また、適用範囲のファイル、ディレクトリ、URL を指定することもできます。その場合、書式は
次のようになります。
< 書式 1>
<File ファイル名 > ... </File>
< 書式 2>
<Directory ディレクトリ名 > ... </Directory>
< 書式 3>
<Location URL> ... </Location>
1
以下の例では、/home ディレクトリ以下に適用する設定を記述しています。
<Directory "/home/*">
AllowOverride None
Options ExecCGI
</Directory>
以下は、主なディレクティブの設定例です。
ディレクティブ
例
説明
ServerType
ServerType standalone
Apache の起動方法を指定しま
す。standalone を指定すると、
スーパーサーバを経由せずにス
タンドアローンで起動します。
inetd を指定すると、スーパー
サーバ経由で起動できます。
ServerRoot
ServerRoot /usr/local/apche
httpd が利用するディレクトリを
指定します。
ServerName
ServerName www.lpic.jp
サーバのホスト名を指定しま
す。
ServerAdmin
ServerAdmin [email protected]
サーバ管理者の連絡先メールア
ドレスを指定します。
StartServers
StartServers 5
httpd 起動時の子プロセスの数を
指定します。
MinServers
MinServers 5
httpd の待機子プロセスの最少数
を指定します。
MaxServers
MaxServers 10
httpd の待機子プロセスの最大数
を指定します。
MaxClients
MaxClients 100
クライアントからの同時接続数
を指定します。
Timeout
Timeout 300
タイムアウトになる秒数を指定
します。
KeepAlive
KeepAlive on
Web サーバとブラウザの間で持
続的な接続を保持するかを指定
します。
MaxKeepAliveRequests
MaxKeepAliveRequests 100
キープアライブでの最大リクエ
スト数を指定します。
KeepAliveTimeout
KeepAliveTimeout 15
キープアライブのタイムアウト
時間を秒で指定します。
Port
Port 80
待ち受けるポートを指定しま
す。
2
User
User apache
httpd 子プロセスの実行ユーザを
指定します。
Group
Group apache
httpd 子プロセスの実行グループ
を指定します。
DocumentRoot
DocumentRoot /var/www/html
ドキュメントルートを指定しま
す。
UserDir
UserDir public_html
ユーザの公開ディレクトリを指
定します。
DirectoryIndex
DirectoryIndex index.html
index.htm index.php
ディレクトリのインデックスと
して返すファイル名を指定しま
す。
ErrorLog
ErrorLog logs/error_log
エラーを記録するログファイル
を指定します。相対パスが指定
されている場合は、ServerRoot
からの相対パスとなります。
LogLevel
LogLevel warn
エラーログのログレベルを指定
します。
HostNameLookups off
DNS の逆引きを行い、アクセス
元の IP アドレスからホスト名
を取得します。
Alias
Alias /images /home/www/images
ドキュメントルート以外の場所
を参照できるようにします。こ
の例では、DocumentRoot/image
で /home/www/image が参照でき
るようにしています。
ScriptAlias
ScriptAlias /cgi-bin/
/var/www/cgi-bin
CGI スクリプト用ディレクトリ
を指定します。
ErrorDocument 404 /notfound.hml
エラーが発生した場合の処理
を、エラーコートに続けて指定
します。/ で始まるファイル名
を指定した場合は、ローカルド
キュメントが表示されます。文
字列を指定した場合はその文字
列が表示されます。URL を指定
した場合は、その URL にリダ
イレクトします。
HostNameLookups
ErrorDocument
Apache を起動するには、以下の起動スクリプトを使います。
# /etc/init.d/httpd start
3
また、apachectl というコマンドも利用できます。次の例では apachectl コマンドを使って Apache を
起動しています。
# apachectl start
< 書式 >
apachectl [ サブコマンド ]
[ サブコマンド ]
start: Apache を起動する
stop: Apache を停止する
restart: Apache を再起動する
configtest: 設定ファイルの構文をチェックする
■モジュールの利用
Apache では、さまざまな機能を持ったモジュールを必要に応じてロードしたりアンロードしたり
することができます。そのため、新しい機能を加える場合でも、Apache 自体をあらためてコンパ
イルすることなく、必要なモジュールだけをコンパイルしてロードするだけですみます。モ
ジュールは、Apache にディフォルトでふくまれているもの ( コアモジュール ) と、別に提供され
ているものとがあります。
モジュール名
説明
mod_access
ホストベースのアクセス制御
mod_alias
ファイルの別名のサポート
mod_auht
パスワードファイルを使ったユーザ認証
mod_auth_ladp
LDAP によるユーザ認証
mod_cgi
CGI スクリプトの実行
mod_dav
WebDAV プロトコルの利用
mod_dir
ディレクトリのインデックス表示
mod_imap
イメージマップのサポート
mod_include
SSI の利用
mod_info
サーバの設定情報表示
mod_mime
拡張子に応じたファイルタイプの決定
mod_perl
Perl の利用
mod_php
PHP の利用
mod_so
モジュールを組み込む DSO 機能の提供
mod_status
サーバのステータス表示
mod_ssl
SSL による暗号化通信
mod_userdir
ユーザディレクトリの利用
モジュールの拡張子は「.so」であり、/usr/lib/httpd/modules ディレクトリ以下などにインストール
されます。モジュールをロードするには、httpd.conf で LoadModule ディレクティブ、AddModule
ディレクティブを使います。次の例では、Perl モジュールをロードするように設定しています。
4
LoadModule perl_module modules/libperl.so
( 中略 )
AddModule mod_perl.c
モジュールを Apache に静的に組み込んで利用することもできます。頻繁に利用するモジュール
は、組み込んだほうがパフォーマンスは向上します。
■クライアントアクセスの制限
指定されたディレクトリ以下にアクセスするとき、ユーザ名とパスワードがなければアクセスを
拒否するよう制限をかけることができます。Apache ではそのために Basic 認証とダイジェスト認
証が利用できますが、通常は Basic 認証が利用されます。Basic 認証を利用するには、httpd.conf に
ユーザ認証設定を追加し、専用のパスワードファイルを用意します。以下は httpd.conf の例です。
<Directory "/var/www/html/private-area">
AuthType Basic
AuthName "Please Enter Your ID and Password!"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>
この例では、/var/www/html/private-area 以下のディレクトリにアクセスする場合、ユーザ名とパス
ワードを求められます。AuthName には、認証の範囲の名前を、AuthUserFile には、パスワードファ
イル名を指定します。パスワードファイル名は通常 .htpasswd というファイル名になります。
「Require valid-user」とすると、.htpasswd ファイルにエントリのあるすべてのユーザがアクセスを
許可されます。valid-user の代わりに、「user ユーザ名・・・」のようにユーザ名を列挙すると、指
定されたユーザのみが許可されます。
認証に用いられるユーザ名とパスワードを設定するには、htpasswd コマンドを使います。
< 書式 >
htpasswd [ オプション ] ファイル名 ユーザ名
[ オプション ]
-c : パスワードファイルを新規に作成する
以下は、/etc/httpd/conf/.htpasswd をパスワードファイルとして、lpicuser のアカウントを作成してい
ます。
# htpasswd /etc/http/conf/.htpasswd lpicuser
New password:
Re-type new password:
Adding password for user lpicuser
■バーチャルホスト
Apache が備えているバーチャルホスト機能を利用すると、1 台のサーバで複数の Web サイトを管
理することができます。バーチャルホストには、1 台のコンピュータに 1 つの IP アドレスと複数
のドメインを設定する「名前ベースのバーチャルホスト」と、1 台のコンピュータに複数の IP ア
ドレスと複数のドメインを設定する「IP ベースのバーチャルホスト」があります。202 試験では、
名前ベースのバーチャルホストについて問われます。
5
バーチャルホストを利用するには、VirtualHost ディレクティブ、NameVirtualHost ディレクティブ
を使います。ここでは、IP アドレスが 192.168.120.100 であるホストで、www1.lpic.jp、www2.lpic.jp
を運用する例を取り上げます。
まず、バーチャルホストに対するリクエストを受け付ける IP アドレスを NameVirtualHost ディレ
クティブで指定します。次に、バーチャルホストごとの設定を VirtualHost ディレクティブ内に記
述します。
NameVirtualHost 192.168.120.100
<VirtualHost 192.168.120.100>
ServerName
www1.lpic.jp
DocumentRoot /var/www/html/www1
</VirtualHost>
<VirtualHost 192.168.120.100>
ServerName
www2.lpic.jp
DocumentRoot /var/www/html/www2
</VirtualHost>
DNS を適切に設定すれば、それぞれの Web サイトを独立して運用することができます。
■ SSL
SSL(SecureSocketLayer) は、TCP/IP とアプリケーション層との中間に実装されている、公開鍵暗号
を使ったセキュリティ技術です。公開鍵暗号では、公開鍵と秘密鍵のペアを使って暗号化と複合
化を行います。SSL を使うと、Web ブラウザと Web サーバ間の通信を暗号化することでセキュア
な通信を行うことができます。また、認証局によって発行されたサイト証明書を使って、サイト
の正当性を証明することができます。セキュアな Web サーバは、SSL による通信の暗号化とサイ
ト証明書を使ってセキュリティを実現します。Apache では、mod_ssl モジュールを使うことで
SSL に対応します。
SSL を利用して Web サーバを運用するには、
mod_ssl モジュールが利用できるようになっているこ
とに加え、以下のような手順でサイト証明書を認証局から入手する必要があります。
1. 公開鍵と秘密鍵のペアを作成します。
2. 作成した公開鍵を、利用企業の身元を証明する書類、手数料などとともに認証局 (CA) へ
送付します。
3.CA では証明書を発行し、送付します。この証明書を使って、Web サーバが Web ブラウザ
に対して身元を明らかにします。
4. 送られてきた証明書を Web サーバにインストールします。
なお、サイト証明書は IP アドレスやドメイン名のペアに対して発行されるため、IP アドレスやド
メイン名が変更された場合は再取得する必要があります。
SSL でアクセスするには、リクエスト URL を「https:// ∼」とします。通信には一般的に 443 番ポー
トが使われます。
Web サーバの監視とメンテナンス
■サーバ情報の取得
mod_status モジュールを利用すると、サーバの稼動状況についての情報を Web ブラウザに表示さ
せることができます。また、mod_info モジュールを利用すると、サーバの設定に関する情報を表
6
示させることができます。以下は、それぞれのモジュールを利用するための httpd.conf の設定で
す。
プロキシサーバの設定
プロキシサーバを使う利点は 2 つあります。1 つはローカルネットワークからインターネットへ
のアクセスを代行することにより、特定の web サイトへのアクセスを制限するなど、クライアン
トからのアクセスを制御できることです。もう 1 つは、1 度アクセスされたデータをキャッシュと
して保存し、再度同じアクセスがあった場合はキャッシュデータを返すことでアクセスを高速化
し、ネットワークトラフィックを削減することができます。
■ Squid の基本設定
Linux で も っ と も よ く 利 用 さ れ て い る プ ロ キ シ サ ー バ は Squid で す。Squid の 設 定 は
Squid.conf(/usr/local/squid/etc/squid.conf など ) で行います。
設定項目
説明
http_port
Squid が使用するポート番号
hierarchy_stoplist
キャッシュを利用しない文字列
maximum_object_size
キャッシュ可能な最大ファイルサイズ
cache_dir
キャッシュを格納するディレクトリと容量など
のパラメータ
cache_mem
メモリ上のキャッシュサイズ
chache_access_log
アクセスログの出力先
cache_log
キャッシュのログ
ftp_user
anonymous で FTP アクセスする際のパスワード
ftp_passive on|off
FTP パッシブモードの有効または無効
reference_age
キャッシュの保存期間
acl
アクセスコントロールリストの設定
http_access
アクセスコントロールリストの制御
アクセス制限の設定は、acl と http_access で行います。acl では、ホストやプロトコルの集合にアク
セスコントロールリスト名を付けます。そのアクセスコントロールリストに対しての制御を
http_access で設定します。次に、squid.conf の設定例を示します。
7