カスタム検索
このエントリーをはてなブックマークに追加
tomo.gif (1144 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)To previous pageTo home pageMailing to me

Apache1.3でサイト公開するための設定

Modified: 10 February 2006

個人でホームページを公開するのは簡単ですが、商売で公開する(銭を取るには)には、いろいろ追加設定がいります。


"ServerName"の設定
ディレクトリの設定
サービスの制限設定
サーバーの情報を隠す
実行時のユーザを決める
".htaccess"の設定確認
ログファイルを保存する

"DocumentRoot"の設定


 "ServerName"の設定 

正確に設定する

一見、ほどんど効果がないように見えますが、バーチャルドメインを使う場合など、ホスト名を失ったとき、この設定が参照されるようです。

ServerName  www.tomo.ac

適当にしていると、原因不明のエラーで悩むことになるかもしれません。


 ".htaccess"の設定確認 

読み取りの禁止

ディレクトリのアクセス制限の設定ファイル(".htaccess")は、それ自身が流出しないように、ファイル名を特定しての禁止設定("<Files>")をします。

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

"^\.ht" は、先頭が".ht"で始まるファイル(".htaccess"や".htpasswd")についての制限であることを示します。

"Satisfy All"は、すべての制限を通過しないと許可しないという意味ですが、上記ケースでは、記述効果はありませんが、将来このセクション内に新たな条件を追加した場合でも、うっかり流出してしまうことのないようにするために記述されています。


 実行時のユーザを決める 

デフォルトのユーザ

Redhat系のLinuxでは、デフォルトでは、以下のように、"apache"になっています。

User apache
Group apache


バーチャルドメイン毎にユーザを決める

"<VirtualHost>"内に記述すると、そのバーチャルホストでの実行時のユーザを決めることができます。

<VirtualHost 192.168.0.12>
        :

User tomo
Group tomo

        :
</VirtualHost>

ただし、CGIの実行時であって、htmlの読み取りややphpの実行権は、apacheのままです。


 サーバーの情報を隠す 

エラー時の表示をやめる

Forbidden

You don't have permission to access / on this server.
Apache/1.3.27 Server at test.tomo.ac Port 80

Apacheのバージョンなどが表示されるので、以下の設定で禁止する。

ServerSignature Off

以下のようにメッセージが表示されるだけになります。

Forbidden

You don't have permission to access / on this server.

 サービスの制限設定 

タイムアウトを短くする

デフォルトでは、"300"だが短くして"60"にする。DoS攻撃にも強くなります。

Timeout 60


接続数の制限

最大の接続数はメモリサイズを超えない範囲で制限する。

# ps -A -o pid,vsz,rsz,command | grep httpd
  PID   VSZ  RSZ COMMAND
14662 80292 6496 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15397 80340 6612 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15398 80340 6600 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15399 80340 6560 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15400 80340 6560 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15401 80340 6560 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15402 80340 6560 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15403 80340 6560 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
15404 80340 6560 /usr/sbin/httpd -DHAVE_ACCESS -DHAVE_PROXY -DHAVE_AUTH_ANON -DH
# 

目安だが、1接続に対し、6.6MByte消費していることがわかる。

512MBのメモリの場合は、70(=512M/6.6M)ぐらいが最大である。余裕を見て、少し少なめの60に設定する。

MaxClients 60

 ディレクトリの設定 

デフォルトディレクトリの設定

redhat7.3では、デフォルトでは、以下の設定になっています。

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

以下のように設定すれは、アクセスを許可したディレクトリのみがアクセスできるようになります。

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

 ログファイルを保存する 

ログをリネームする

"<VirtualHost>"の中で定義すると、そのバーチャルホストだけのログが取れます。

詳しいログをとるには、"combined"を指定します。

<VirtualHost 192.168.0.12>
        :
    ErrorLog logs/tomo.ac-error_log
    CustomLog logs/tomo.ac-access_log combined
</VirtualHost>

        :

<IfModule mod_ssl.c>
        :
SSLLog      logs/tomo.ac-ssl_engine_log
        :
</IfModule>

        :

<VirtualHost _default_:443>
        :
ErrorLog logs/tomo.ac-ssl-error_log
TransferLog logs/tomo.ac-ssl-access_log
        :
CustomLog logs/tomo.ac-ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>


エラーログのレベルの設定

下のほうに行くほど詳しいログが出ることになる。

emerg 動作不能な状況(Emergencyの意)
alert 修正しなければ(部分的に)動作できない問題
crit 上記に該当しない動作上の問題(Criticalの意)
error 存在しないファイルへのアクセスなど各種エラー
warn 警告(Warningの意)。設定のミスなどが考えられる場合
notice 起動停止や設定変更された場合など
info あらゆる情報(プロセスの起動や停止など)
debug Apache関連のデバッグに必要な情報

デフォルトは、"warn"です。

公開するなら、最低でも "notice"。セキュアにするなら、"info"。

設定どおりに動かないとき原因を推察する場合、"debug"。


LogLevel info

SSLLogLevel info


ログのローテーション

ローテーション間隔を、"monthly"(毎月1回)に指定します。そして、ローテーションしたログは、"rotate 6"(半年)保存にしてします。

"/etc/logrotate.conf"を開きます。

# see "man logrotate" for details
# rotate log files weekly
monthly

# keep 4 weeks worth of backlogs
rotate 6

# create new (empty) log files after rotating old ones
create

# uncomm:xent this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
  monthly
  create 0664 root utmp
  rotate 1
}

# system-specific logs may be also be configured here. 

 "DocumentRoot"の実験 

DocumentRootを指定しないとどうなるのか

DocumentRootを指定しないで開くと、「ファイルが見つかりません」のメッセージがでました。

いったいどこを探しに行っているかを、"/var/log/httpd/error_log"の最後に以下のようなメッセージが記録されていました。

要は、""を探しにいっているようです。これがコンパイル時に組み込まれているデフォルトのようです。

[Sun Jan 22 19:18:54 2006] [error] [client 192.168.0.81] File does not exist: /etc/httpd/htdocs/


バーチャルホストを指定している場合のDocumentRoot

バーチャルホストを指定していない場合あらかじめ設定されているDocumentRootが参照されますが、"NameVirtualHost"を有効にして、バーチャルホストを指定していると、その"VirtualHost"のブロック内で定義されている"DocumentRoot"が有効になります。

バーチャルホストを指定する場合、一般に複数の"VirtualHost"が定義されます。どの"VirtualHost"の定義が採用するかどうかは、"VirtualHost"内の"ServerName"が一致したらその一致した"VirtualHost"内の"DocumentRoot"が有効になります。

"VirtualHost"の中に、"DocumentRoot"の定義がない場合、デフォルトの"DocumentRoot"が有効になります。 


To previous pageTo home pageMailing to meJump to Top of pageline.gif (927 ツバツイツト)line.gif (927 ツバツイツト)tomo.gif (1144 ツバツイツト)
カスタム検索



このエントリーをはてなブックマークに追加