Apache Web サーバ
Apache Web サーバは、現在最も広く使われている Webサーバであり、2013年5月現在でのシェアは約53%となっている
参照:Web Server Survey | Netcraft
Apache のモジュール
モジュールとは、Apache にさまざまな機能を提供するプログラム部品。必要に応じて Apache の機能を柔軟に構成できるようになっている。
参照:Module Index - Apache HTTP Server
Apache の設定
Apache の設定は /etc/httpd/conf/httpd.conf を中心とした設定ファイルで行う。設定終了後は Apache を再起動させる必要あり。
Apache を起動したり、終了したりするには2種類
- 制御スクリプト /etc/init.d/httpd
- service コマンド
引数 | 内容 |
---|---|
start | 起動 |
stop | 停止 |
restart | 再起動 |
reload | 再読み込み |
graceful | 安全な再起動 |
configtest | 構文チェック |
基本的な設定
Apache の主要な設定ファイルは /etc/httpd/conf/httpd.conf 。それ以外にも /etc/httpd/conf.d/ ディレクトリ以下に補助的な設定ファイルがある。 /etc/httpd/conf.d/ ディレクトリ以下の設定ファイルは、httpd.conf 内に読み込まれて利用される
Apache の設定ファイル
ファイル | 内容 |
---|---|
/etc/httpd/conf/httpd.conf | 主要な設定 |
/etc/httpd/conf/magic.conf | MIMEタイプの設定 |
/etc/httpd/conf.d/manual.conf | オンラインマニュアルの設定 |
/etc/httpd/conf.d/perl.conf | スクリプト言語 Perl を利用するための設定 |
/etc/httpd/conf.d/php.conf | スクリプト言語 PHP を利用するための設定 |
/etc/httpd/conf.d/python.conf | スクリプト言語 Python を利用するための設定 |
/etc/httpd/conf.d/ssl.conf | SSL を利用するための設定 |
/etc/httpd/conf.d/webalizer.conf | アクセス解析ツール Webalizer の設定 |
/etc/httpd/conf.d/welcome.conf | デフォルトページの設定 |
httpd.conf の設定項目
httpd.conf は3つのパートから構成されている
- Section1 : Grobal Environment (サーバ自体の全般設定)
- Section2 : 'Main' Server configuration (メインの Webサーバの設定)
- Section3 : Virtual Hosts (バーチャルホストの設定)
httpd.conf の設定項目はディレクティブと呼ばれ、記述形式は
ディレクティブ名 設定値
タグを使って範囲を指定することもできる。
- Directory タグは設定が有効なディレクトリ単位の指定
- Files タグはファイル単位での指定
- Location タグは URL 単位での指定
※ Directory タグや Files タグでは、ドキュメントルートとは無関係に、ファイルやディレクトリのフルパスで指定する。また、「*」、「?」などのメタキャラクタが利用できる。
<Directory ディレクトリ名> ~ </Directory> <Directory hoge/> ~ </Directory>
レスポンスヘッダ内に含める情報の指定
ServerTokens OS
サーバ名やバージョンが特定されると、クラッカーが攻撃ツールを選定しやすくなるため、バージョン番号を表示させない方が安心感あっぷ。この場合「Prod」
設定値 | 表示例 |
---|---|
Prod | Server: Apache |
Major | Server: Apache/2 |
Minor | Server: Apache/2.0 |
Min | Apache/2.0.52 |
OS | Apache/2.0.52 (CentOS) |
Full | Apache/2.0.52 (CentOS) PHP/4.4.3 |
KeepAlive の有効/無効の指定
KeepAlive を有効にすると、1回のTCPセッションで複数のHTTPリクエスト/レスポンスを処理する。これによって、大量の画像を用いているページなどの表示が速くなる。KeepAliveRequests は1つのキープアライブで処理する最大数を、KeepAliveTimeout はキープアアライブのタイム後時間(秒)を指定する。
KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15
Apache の子プロセスの設定
バージョン2.0以降の Apache は複数の実装を持つ。 mpm-prefork は旧来の Apache と同様の実装。このタグ内では、 Apache の子プロセスの設定を行う。Apache は 80番ポートでリクエストを受け付ける親プロセス (root ユーザー権限で実行) と、個々のクライアントに応答する子プロセス (User ディレクティブで指定したユーザー権限で実行)から構成される。
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
StartServers | Apache 起動時にスタートする子プロセス数を指定 |
MinSpareServers | 待機している子プロセスの最少数を指定 |
MaxSpareServers | 待機している子プロセスの最大数を指定 |
ServerLimit | MaxClients で設定可能なサーバプロセス数の上限を指定 |
MaxClients | 子プロセスの最大数を指定 |
MaxRequestPerChild | 個々の子プロセスが処理することのできるリクエストの制限数を指定 |
サーバが待ち受けるポートの設定
サーバが待ち受けるポート番号を指定する。Webサーバは通常80番ポートを利用する。
Listen 80
起動時に読み込むモジュールの設定
起動時に読み込むモジュールを指定する。モジュールは /etc/httpd/modules/ ディレクトリ以下に格納されている。
LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so etc...
サーバ管理者のメールアドレスの指定
ServerAdmin riceplanting@www.hogehoge.com
ホスト名とポート番号の指定
ServerName www.hogehoge.com:80
ディレクトリ以下の設定
Options FollowSymLinks はシンボリックリンクをたどることを許可する。
AllowOverride None は、.htaccess ファイルによる設定の上書きを抑制する
<Directory "/"> Options FollowSymLinks AllowOverride None </Directory>
hoge/ ディレクトリ以下の設定
Options Indexes は、ブラウザでのインデックス表示(ディレクトリを指定してアクセスした際にファイル名一覧を返す)を許可する。
Order allow, deny や、 Allow from all はホストベースのアクセス制御を表す。
AllowOverride は、分散設定ファイルで上書きを許可するディレクティブの種類を定義する
<Directory "hoge/"> Options Indexes FollowSymLinks AllowOverride None Oder allow, deny Allow from all </Directory>
AllowOverride の設定値
設定値 | 内容 |
---|---|
None | 一切の上書き不可 |
All | .htaccess 内で利用可能なすべてのディレクティブが利用可能 |
AuthConfig | 認証に関するディレクティブが利用可能 |
FileInfo | ドキュメントタイプを制御するためのディレクティブが利用可能 |
Indexes | ディレクトリインデックスを制御するためのでぃれくち部が利用可能 |
Limit | ホストベースのアクセス制御に関するディレクティブが利用可能 |
Options | 特定のディレクトリにおける機能を指定するためのディレクティブが利用可能 |
ユーザー別のWebサイト公開の指定
ユーザー個々に Webサイトを公開するかどうかを指定する。
UserDir disable の場合、個々の Webサイトは公開されない
UserDir public_html の場合、「http://ホスト名/~ユーザー名」でアクセスしたときにホームディレクトリ内の public_html 内にアクセスすることになる
<IfModule mod_userdir.c> UserDir public_html </IfModule>
URL 未指定の際に、インデックスとして返すファイル名の指定
URL でファイル名が指定されなかった場合にインデックスとして返すファイル名を指定。 Apache は指定されたファイル名を順にチェックし、最初に見つかったものを返す。見つからなかった場合かつ Indexex オプションがセットされているときはファイル名一覧を返す。
DirectoryIndex index.html index.html.var index.php
分散設定ファイル名の指定
個々のディレクトリ内に分散設定ファイルを置くことで、そのディレクトリ以下に適用する設定を上書きできる。その分散設定ファイル名を指定する。
AccessFileName .htaccess
CGI プログラムのあるディレクトリへのマッピングを指定
CGI プログラムが格納されているディレクトリへのマッピングを指定する。「http://ホスト名/cgi-bin/foo.cgi」でアクセスした場合、「/var/www/cgi-bin/foo.cgi」が実行されることを表す。
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"