Apache2のサイトの設定 Ubuntu/Debian

2011.10.30 0:13
 本家に行くとやたらと詳しく書いてあるので特にここで書く必要はないんですが、自分のサーバーの設定として。
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
Allow from all
となっていて、すべてのURLアクセスを許可しています。つまりOrderでもって、すべてのアクセスを許可し、許可した中の一部をアクセス拒否するという設定をしているということになります。denyとallowを逆にすると、すべてのアクセスを制限してから一部を許可するというやり方になります。アクセス制限はホストやIPアドレスを指定することで可能です。

例としてはこんな設定になります。
<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>








プロフィール



  • Name :: 山上オサム ♂(39)
  • Hobby :: 武術
  • Work :: Web Designer