Apache.httpd.confの設定の目的 [344]

  •  場所: /etc/httpd/conf/httpd.conf
  •  Perlのcgiが使えるように
  •  php が使えるように
  •  SSL が使えるように
  •  WebDav が使えるように

 ポートの設定

makeをrootで行うとポートは80に設定され、ユーザで行うと8080になる。

 ユーザとグループの設定

通常のhttpd.confの場合初期設定では両方とも"nobody"となっている、必要に応じて変更する。

User httpd
Group httpd

メールアドレスの設定

エラーページにはここで設定したメールアドレスが表示される。またエラーがあった場合このアドレスに通知がいく。webmasterなどのメールアドレスを登録しておくとよい。

# ServerAdmin: Your address, where problems with the server should be

# e-mailed.

ServerAdmin admin@www.xxxx.co.jp

 SSLモジュールの組み込み

#LoadModule ssl_module modules/mod_ssl.so

      ↓#を削除

LoadModule ssl_module modules/mod_ssl.so

 phpモジュールの組み込み

下記を追加する
LoadModule php4_module C:/PHP/sapi/php4apache2.dll
AddType application/x-httpd-php .php

サーバ名称の設定

#ServerName localhost:80

       ↓追加

#ServerName localhost:80
ServerName namae.co.jp (取得サーバードメイン名を)

サーバネームの設定

コバルトの場合管理画面で設定できます。 使用するドメイン名を記入する、これを行わないと起動しない。

ServerName www.xxxxx.co.jp

ドキュメントルートの設定

htmlファイルを置く場所を決める。初期設定では/usr/local/apache/htdocsとなっているので/home/htdocsなどにすると便利になる。コバルトの場合管理画面で設定しています。

DocumentRoot "/home/htdocs"

インデックスを表示しない

初期設定ではディレクトリ内にindex.htmlが存在しない場合はディレクトリ内の一覧を表示されるようになっているが、ここのIndexesを削除することにより一覧表示されなくなる。

Options FollowSymLinks MultiViews ExecCGI Includes
Indexesがあると、ディレクトリに後述で指定したHTMLファイルが無い場合、インデックスリストが表示されるので削除
「Includes」を残すと、SSIが有効になります。

ユーザディレクトリの追加

  •  配下でのCGI/SSIの実行権付与とインデックスリストの非表示

Limit> ディレクティブは、アクセス制御の範囲を 指定された HTTP メソッドに限定するもので、それ以外のメソッドは、影響を受けない。つまり、下記では、GET POST OPTIONS PROPFIND のメソッドに対してのみアクセスの制御を行ない(ここではアクセス許可)、 それ以外のメソッドについてはアクセス制御がかからない。

LimitExcept> は、<Limit> セクションの反対の動作をし、 標準のメソッドと標準外や未認識のメソッドの場合の両方を設定できる。下記では、GET POST OPTIONS PROPFIND のメソッド以外のアクセス制御が行われ、ここでの設定では不許可になる。<LimitExcept>は未設定のメソッド全てに制御がかかるので、こちらで設定したほうが確実である。

#<Directory "C:/Apache/users">
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
#    Order allow,deny
#   Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
#   Order deny,allow
#  Deny from all
# </LimitExcept>
#</Directory>

       ↓削除/追加

<Directory "C:/Web/*/public_html">
  AllowOverride FileInfo AuthConfig Limit
  Options MultiViews SymLinksIfOwnerMatch ExecCGI IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
#    Order allow,deny
#    Allow from all
#  </Limit>
  <LimitExcept GET POST OPTIONS PROPFIND>
  Order deny,allow
  Deny from all
  </LimitExcept>
</Directory>

HTMLファイル名の追加

DirectoryIndex index.html

       ↓追加

DirectoryIndex index.html index.htm index.stml index.php

 左側のファイル名から順に探して、表示される。

日本語表示の設定(ブラウザの文字化け対策: 2個所)

下記の設定をした場合は、ドキュメントで必ずcharsetを指定しないと文字化けする。コンテンツには、EUC-JPとshift-jisの両方があるためこのようにして(AddDefaultCharset noneとしても良い)、ドキュメントに依存して表示させている。そのため、一部のCGI等も改造しているので注意が必要である。shift-jisのコンテンツしかないなら、 AddDefaultCharset shift_jis とすれば良い。

LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw

       ↓移動

LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv tw
AddDefaultCharset ISO-8859-1

       ↓追加(コメントアウト)

#AddDefaultCharset ISO-8859-1

CGIファイル拡張子の定義

#AddHandler cgi-script .cgi

       ↓削除、追加

AddHandler cgi-script .cgi
AddHandler cgi-script .pl

HTML と SSIの設定

#AddType text/html .shtml
#AddHandler server-parsed .shtml

       ↓削除

AddType text/html .shtml
AddHandler server-parsed .shtml

ホスト名の照会設定

ここをOnにするとログにアクセスしてきたホストをIPアドレスではなくホスト名で保存ができるようになる。

HostnameLookups off

エラーログの保存先

ここを変更すると初期設定では/usr/local/apache/logs/に保存されるログの置き場所を変更できる。ログは/var/に置かれることが多いので/var/apache/などのディレクトリを作り、そこに保存するようにすると便利。

ErrorLog /var/log/httpd/error

アクセスログの保存先

エラーログと同じようにアクセスログの保存場所を指定できる。カスタムログを作りたければ下記の部分を変更します。その場合場合、Raqのデフォルトで各サイトのlogディレクトリに毎日1回追記保存されるログは保存されなくなります。  #

CustomLog /var/apache/access_log common

シグネチャーの設定

エラーの時などにapacheのバージョンと一緒に管理者のメールアドレスが表示されるが、ここの設定を"EMail"にすると自動的にmailto:のリンクになる。

ServerSignature EMail

CGIディレクトリの設定

初期設定では/usr/local/apache/cgi-bin/になっているディレクトリを変更できる。 コバルトの場合CGIはcgi-wrapperを用い、htmlがおける場所ならどこにでもCGIを設置することが可能となっています。

#AddHandler cgi-wrapper .cgi
#AddHandler cgi-wrapper .pl

もしCGIの動作場所を限定するのであれば上記2行をコメントアウト下記のように任意のディレクトリを作成し指示します。

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

エラーページの指定

指定することによりエラーページを自分で作ったものに変更できる。エラー番号ごとに指定をする。DocumentRootが/home/htdocs/の場合に/home/htdocs/error/というディレクトリを作り指定するには下記のようにする。

 ErrorDocument 403 /error/error_403.html
 ErrorDocument 404 /error/error_404.html

バーチャルホストの設定

設定により一つのサーバで複数のドメインでのアクセスを受けることができるようになる。

# VirtualHost: Allows the daemon to respond to requests for more than one

# server address, if your server machine is configured to accept IP packets

# for multiple addresses. This can be accomplished with the ifconfig

# alias flag, or through kernel patches like VIF.

# Any httpd.conf or srm.conf directive may go into a VirtualHost command.

# See also the BindAddress entry.

#<VirtualHost host.some_domain.com>

#ServerAdmin webmaster@host.some_domain.com

#DocumentRoot /www/docs/host.some_domain.com

#ServerName host.some_domain.com

#ErrorLog logs/host.some_domain.com-error_log

#TransferLog logs/host.some_domain.com-access_log

#</VirtualHost>

NameVirtualHost xxx.xxx.xxx.xxx

↑ここでIPアドレスを指定する

<VirtualHost 210.168.239.169>
 ServerName www.xxxxxxx.co.jp
 ServerAdmin webmaster@xxxxxxxx.co.jp
 DocumentRoot /home/htdocs/xxxxxxxx
 </VirtualHost>
 ↑それぞれのドメイン名の詳細を設定するこれは標準的なhttd.confの場合

仮想サイトのユーザーのURLにチルダを使いたくない 場合

AliasMatch ^/~([^/]+)(/(.*))? /home/sites/site1/users/$1/web/$3
AliasMatch ^/([^/]+)/(.*) /home/sites/site1/users/$1/web/$3

項目別設定詳細リスト

下記項目はWeb サーバの基本的な動きを指定します。

キー 説明 ServerType Apache の起動モードを指定します。マシンの起動時に、rc.httpd などで起動され、プロセスが常駐する場合(デーモンプロセスのこと)、standalone を指定します。また、この手のプログラムの起動方法として、inetd を使う方法があります。/etc/inetd.conf(あるいは、xinetd を利用していれば、/etc/xinetd.d ディレクトリ下) に、Apache プログラムを指定して、クライアントの要求がある度に、Apache を起動するようにした場合には、inetd を指定します。 Port Apache が提供する HTTP の TCP Port 番号を指定します。普通、HTTP の Port は 80 なので、80 を指定します。ですが、すでに 80 を他のプログラムが使っている場合や、権限が無く、80 番の Port を使えない場合などは、他の Port 番号を使用するように指定することも可能です。良く使われる番号は、8080 番です。 ServerAdmin サーバ側に問題が発生した場合、そのエラーレポートを送るメールアドレスを指定します。エラーメッセージ中に、ここに指定されたメールアドレスが表示されます。ちなみに、Apache に異常が起きた場合、このメールアドレスに自動的にメールが送られてくるわけではありません。

下記項目では、html ファイルや、イメージファイルなどのリソース設定を行います。主に、URL に対する実際のファイルパスの設定が殆んどです。

キー 説明 DocumentRoot リソースの設定項目の中で、もっとも重要な部分です。ここに、このサイトのルートドキュメントのパスを設定します。ここに設定されたパスは、このサイトのルートパスとなります。つまり、http://www.dokoka.com/ と、アクセスしたときに、その対象となるパスです。 UserDir ユーザごとに、Web ページを公開したい場合に、各ユーザがドキュメント類を置いておくディレクトリを指定します。普通は、public_html で、ユーザのホームディレクトリの下に、public_html というディレクトリを作り、その下にドキュメントを入れて置きます。こうすることにより、例えば http://www.dokoka.com/~user_name/ は /home/user_name/public_html/ にマッピングされます。 DirectoryIndex クライアントが、ディレクトリパスを指定した場合に、どのファイルをデフォルトで表示するかを設定しておきます。例えば、index.html と指定しておけば、http://www.dokoka.com/ にアクセスした場合は、DocumentRoot に設定したディレクトリ内の、index.html が表示されることになります(もし、index.html が存在すればですが)。ここには、複数のファイルを指定しておくこともできます。「DirectoryIndex index.html index.htm」と指定しておけば、まず index.html を探して、無ければ index.htm を探します。また、CGI ファイルなども指定できます。 Alias 1番目の引数の URL を、2番目の実パスへマッピングします。例えば、「Alias /icons/ /usr/local/etc/httpd/icons/」とすると、http://www.dokoka.com/icons/ というアクセスに対して、/usr/local/etc/httpd/icons/ を見ていることになります。

下記項目では、セキュリティに関係のある設定します。CGI や SSI の実行許可の設定・アクセス許可の設定などを行います。

キー オプション 説明

Directory パス>

/Directory>

この Directory の後ろに指定したパスを対象に、<Directory パス> から </Directory>で囲まれた中に記述されているオプションを設定します。「Options 設定項目」と記述し、設定項目が複数ある場合は、「Options 設定項目1 設定項目2」と続けて記述できます。また、その設定項目を明示的に禁止したい場合は、「Options -設定項目」と、禁止したい項目の前にマイナス「-」記号を付けます。 

Options Indexes クライアントが、ディレクトリ名を指定してアクセスした場合、まず、リソースの設定で説明した DirectoryIndex に指定されたファイルを探して、存在すればそれを表示しますが、そのファイルがない場合にディレクトリ内の一覧を表示するかを設定します。Options Indexes と指定すると、ディレクトリ内の一覧を表示しますが、Options -Indexes と指定すると、ディレクトリ内の一覧を表示しなくなります(クライアントにはエラーを返す)。特に理由がない場合は、ディレクトリ内の一覧は表示させないようにした方がいいと思います。 Options FollowSymLinks シンボリックリンクファイルを認識させるかを設定します。 Options ExecCGI CGI を実行できるかどうかを設定します。 Options Includes SSI を実行できるかどうかを設定します。 AccessFileName

後述する .htaccess のファイル名を指定します。デフォルトのままで特に変更する必要はないと思います。もし、このファイルを利用したくない場合は、コメントアウトしておきます。 

AllowOverride

これは、上位で設定した設定値を、下位の設定で変更できるように許可を与えます。例えば、<Directory /> 内に設定した値は、すべてのディレクトリに有効になります(/ がルートディレクトリ以下を指しているから)。それとは別に、<Directory /usr/local/apache/html> という設定があったとします。AllowOverride None の場合は、<Directory /> で設定された項目を、下位の設定である <Directory /usr/local/apache/html> で変更することはできません。逆に、AllowOverride All の場合は、下位の設定で変更することができます。 

AllowOverride All すべての設定の変更を有効にします。 AllowOverride None すべての設定の変更を無効にします。 AllowOverride Options 上記の Options の設定の変更を有効にします。 AllowOverride Limit アクセス制御の設定の変更を有効にします。

.htaccess ファイル

アクセス設定のセクションでの説明が、ディレクトリを指定して、それに対して色々なオプションを指定するのに対し、このファイルは、これが置かれているディレクトリと、その下層のディレクトリに対して設定を行います。このファイル内には、アクセス設定のセクションで説明したほとんどのオプションを書くことができます。ただし、<Directory>などで、ディレクトリを指定することはできません。

このファイルで設定するメリットは、httpd.conf で設定するには管理者でなければいけないのに対し、このファイルはドキュメントを作っているユーザが設定できるという点です。つまり、個々人が自由に設定を細かく変更できるのです。逆にデメリットは、アクセスがある度に .htaccess を見に行くので、パフォーマンスに影響が出ますので注意してください。ユーザごとに好き勝手に設定されては困る場合、httpd.conf で変更されたくない設定を行い、前述の AllowOverride で変更を許可する項目を指定してください。全面的にこのファイルを利用したくない場合は、AccessFileName の設定をコメントアウトしてください。グローバルな設定は httpd.conf ファイルで行い、ユーザ毎のディレクトリでは、.htaccess を使用します。

Apache では、デフォルトの設定のままでは、.htaccess ファイルでの設定がほとんど無効にされています。

Directory />

 Options FollowSymLinks
 AllowOverride None

/Directory>

ディレクトリ「/」以下、つまり全てのディレクトリ対して、設定の上書きが禁止されているので、CGI の実行や、SSI の実行が出来なくなっています。これを避けるには、ここの AllowOverride の値を変えて対応する必要があります。たとえば次のようにすれば、.htaccess ファイルで、Options を指定することができるようになり、ユーザ毎に CGI や SSI を有効にすることができます。

Directory />

 Options FollowSymLinks
 AllowOverride Options

/Directory>

上記外の設定については下記リンクを参照ください。

JAPANIZED APACHE SERVER PROJECT

※RaQ550 の初期状態では、Htaccessにて、Optionsを変更できないように設定されているため、

/etc/httpd/conf/access.conf の記述を以下のように書き換えてから.htaccessファイルをアップロードしてください。

#AllowOverride AuthConfig Indexes Limit (コメントアウトします)

AllowOverride All

設定ファイルを保存後、Webサーバーの再起動を行います。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-08-19 (日) 09:28:00 (2108d)