本家に行くとやたらと詳しく書いてあるので特にここで書く必要はないんですが、自分のサーバーの設定として。
http://httpd.apache.org/docs/2.1/ja/mod/core.html
だいたいの基本的な設定ですが、Webサーバーなんかを自宅でやっている限りは以下の設定で比較的十分です。開発環境としてはこんな感じだと思います。
DocumentRoot /home/sample_user/public_html
複数の項目に渡って設定するときは以下のように半角で区切って設定します。
例としてはこんな設定になります。
http://httpd.apache.org/docs/2.1/ja/mod/core.html
だいたいの基本的な設定ですが、Webサーバーなんかを自宅でやっている限りは以下の設定で比較的十分です。開発環境としてはこんな感じだと思います。
ServerAdmin
自分のEmailを書いておきます。開発環境とかだったら特に自分のメールアドレスを書く必要はないかと思いますが、一応礼儀として自分のアドレスを表記しておくという感じです。DocumentRoot
デフォルトでは、たしか/var/wwwみたいことになっている筈ですが、これはWEBサーバーとして動かすディレクトリだったら基本的にはどこでもいいです。しかし慣例としてデフォルトの/var/wwwあたりにしておくか、自分で利用しているユーザーのホーム以下に設定するのがいいです。DocumentRoot /home/sample_user/public_html
<directory></directory>の設定
このタグ(Apache2ではディレクティブっていうのかな?)にはいろいろな設定をすることができます。まず大切なのがOptionです。これはWEBサーバーでできる機能の制限や拡張などいろいろと複数項目に渡っていっぺんに設定が可能です。| 項目 | 内容 |
|---|---|
| All | MultiViews を除いた全ての機能が有効となります。 これがデフォルトです。 |
| ExecCGI | mod_cgi による CGI スクリプトの実行を許可します。Perlなんかやる人はこれを有効にしておかないとダメです。 |
| FollowSymLinks | サーバが、このディレクトリ内でシンボリックリンクをたどれるようにします。シンボリックリンクはローカル内では当然すべてたどれるようになっているので、WEBサーバー側のアクセスとしてシンボリックリンクがたどれるかどうかということです。FTPクライアントソフトは通常リンクを作れないで、SSHとかで作るようになるので特に必要のない人は設定しない方がいいです。設定したDocumentRootより外には接続しません。 |
| Includes | mod_includeが提供するSSIを有効にします。10年前は活躍していましたが、SSIって今は使っている人が殆どいないと思うで設定しなくても大丈夫です。が使用時もたまたまあるっていうぐらいのものです。 |
| IncludesNOEXEC | SSI は有効になりますが、#exec コマンド と #exec CGI は無効になります。 ただし、#include virtualにより、ScriptAliasされたディレクトリで CGI を実行することは可能です。つまり重い処理や負荷の多いコマンド以外を許可するといった感じです。 |
| Indexes | ディレクトリ内にindex.htmlなんかがない場合に、そのディレクトリ内のファイルの一覧を表示します。セキュリティー上はあんまりよくないので使わない方がいいです。開発途中とかだったらあった方が便利かも。 |
| MultiViews | mod_negotiation による コンテントネゴシエーション された "MultiViews" を許可します。といわれても全く意味わからんのですが、これはヘッダに組み込まれた言語などのメタデータを受け取って日本語ページ、英語ページなどをアクセスによって振り分けてくれる機能を提供したります。Allが指定されていてもこの機能だけは有効にならないのでご注意。 |
| SymLinksIfOwnerMatch | シンボリック先のファイルまたはディレクトリが、 シンボリックリンクの所有ユーザ ID と同じ場合にのみシンボリックリンクを たどれるようにします。これは何に使うのかというとコンテンツ閲覧(ダウンロード)の制御に使えます。 |
| None | だいたいすべてが無効になります。 |
Options FollowSymLinks Includes ExecCGI MultiViews
AllowOverride
.htaccessファイルがどのディレクティブ設定をオーバーライド(上書き)できるかどうかを設定します。特に問題がなければAllで構わないですが、レンタルサーバー何かでは無闇に許可すべきかどうか迷うところではあります。問題がなければ、AllowOverride Allで大丈夫です。
| 項目 | 内容 |
|---|---|
| AuthConfig | 認証に関するディレクティブの使用を許可する (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require など)。 |
| FileInfo | ドキュメントタイプを制御するディレクティブ (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime の Add* と Remove* ディレクティブなど)、 ドキュメントのメタデータを制御するディレクティブ (Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName), mod_rewrite のディレクティブ RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule) と mod_actions の Action ディレクティブの使用を許可する。 |
| Indexes | ディレクトリインデックスを制御するためのディレクティブの使用を許可する (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName など)。 |
| Limit | ホストへのアクセス制御を行うためのディレクティブの使用を許可する (Allow, Deny, Order). |
| Options[=Option,...] | 特定のディレクトリにおける機能を指定するためのディレクティブの使用を許可する (Options と XBitHack)。 Options で設定するオプション を、(空白を含めない) コンマ区切りのリストにして等号の後に続けることで 設定できます。 |
複数の項目に渡って設定するときは以下のように半角で区切って設定します。
AllowOverride FileInfo Limit Options[+ExecCGI -MultiViews +SymLinksIfOwnerMatch]
Order
OrderはAllowとセットでアクセスの制限をします。デフォルトでは、Order allow,denyとなっていて、すべてのURLアクセスを許可しています。つまりOrderでもって、すべてのアクセスを許可し、許可した中の一部をアクセス拒否するという設定をしているということになります。denyとallowを逆にすると、すべてのアクセスを制限してから一部を許可するというやり方になります。アクセス制限はホストやIPアドレスを指定することで可能です。
Allow from all
例としてはこんな設定になります。
<VirtualHost *:80>
ServerAdmin sample@example.com
DocumentRoot /home/sample_user/public_html
<Directory />
Options FollowSymLinks Includes ExecCGI MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
# www
<VirtualHost *:80>
ServerAdmin sample_user@example.com
DocumentRoot /home/sample_user/public_html
ServerName www.example.com
</VirtualHost>
<VirtualHost *:80>
ServerAdmin sample_user@example.com
DocumentRoot /home/sample_user/public_html
ServerName example.com
</VirtualHost>



