Linux自宅サーバー構築記。PHP4掲示板作成。

WEBプログラミングの世界へようこそ !!
HP制作の入門&手引き


   メニュー
フォーム POST取得
PostgreSQL接続 CSVレコード追加
CSVレコード出力 CSVレコード削除
ページング クッキー
セッション リロード対策

   リンク
PHP入門&TIPS
   phpspot

PHP総合
   PHPの小部屋

質問掲示板
   phppro

用語集
   phppro

   メニュー
apache1.3.xのインストール apache1.3.xの設定
apache1.3.xバーチャルホスト PostgreSQL7.4.xのインストール
PostgreSQL7.4.xの設定 PHP4.3.xのインストール
PHP4.3.xの設定ファイル apache1.3.x, PostgreSQL7.4.x, PHP4稼動確認
Samba telnet
proftpd ntpd
MySQL3.23.xのインストール BIND
postfix  
 TOP  <<apache1.3.xの設定

Linux


テキスト

apache1.3.xの設定

apacheの設定ファイルは、ソースからインストールした場合(当サーバ。)は、
/usr/local/apache/conf
ディレクトリ内の、httpd.confになるものとする。
以前は、httpd.conf, srm.conf, access.confの複数の設置ファイルに分かれていたが、
最近のapacheの、設定ファイルは、httpd.conf1つにまとめられている。
すべてこのファイルのみで、設定するようになっている。
httpd.confは以下の3つのセクションに分かれている。

[基本動作の設定]
[メインサーバ機能設定]
[アクセス制御設定]
[モジュール、ディレクトリ機能設定]
[バーチャルホスト設定]
[全体の設定例]

●基本動作の設定。

[Global Environment]

・ServerType
apacheの起動タイプを指定。一般的なデーモンプロセスで動作させるには、
「standalone」のままとする。

・ServerRoot
apache関連の設定ファイルやログファイルを置くディレクトリを指定。
これ以降の設定で、相対パスで記述した部分は、ServerRootで指定したパスが、
基準となる。

・PidFile
デーモンのプロセスIDを記録するファイル名を指定。デフォルトのままで良い。

・ScoreBoardFile
apacheの内部処理情報を記録するファイル名を指定。

・Timeout
要求を受けたクライアントとの通信のタイムアウトを秒数で指定。

・KeepAlive
apacheは1つの要求を処理しては終了するという動作を繰り返す。
「On」に設定しておくと、クライアントから連続して要求を受けた場合、
処理を終えてもプロセスはただちに終了せずに、KeepAliveTimemoutで
設定した時間だけ、次の要求を待つ仕組みになる。

・MaxKeepAliveRequests
1つの接続で処理できるリクエスト数を指定。
デフォルトでは「100」。KeepAliveTimeoutをデフォルトよりも
小さくとった場合に、小さい値にすると良い。

・KeepAliveTimeout
要求処理後、接続を切らずに次の要求を待つ時間を秒で指定。
あまり長くするとプロセス数が増えてしまう。
少ないと接続回数(要求受付)が、増える。デフォルトの値を中心に調整するが、
一般的には、やや減らす
方向として、5〜15秒程度にすると良い。

・MinSpareServers
リクエスト待ちをするHTTPサーバプロセス数の最小数を指定。

・MaxSpareServers
リクエスト待ちのHTTPサーバプロセス数の最大数を指定。
アクセスが集中して、apacheサーバのレスポンスが低下するなどの状態がログに
現れたら、ログを見ながら、少しずつこの値を増やしていくものとする。

・StartServers
複数のリクエストに応えるために作っておく、httpdの子プロセス数を指定。

・MaxClients
同時アクセスが可能なクライアント数を指定。多くしすぎると、
リソースを消費するので、注意が必要である。
通常はデフォルト値ほど必要なく、「50〜100」を目安に設定する。

・MaxRequestsPerChild
子プロセスが処理できるリクエスト数を指定。

・LoadModule
DSOというシステムによって、apacheに動的に組み込まれるモジュールを指定。
モジュールは、/usr/lib/apacheのディレクトリに配置される。
当面はデフォルトのままで良いものとする。
また、このオプションにより、apacheサーバのチューニングを行うことが可能である。
組み込まれるモジュールが多いほど処理に時間がかかり、サーバレスポンスは
低下する傾向にある。シビアな環境で運用するapacheの場合、よく吟味して、
不要なモジュールはコメントアウトして外すと、サーバレスポンスは向上する。

[Global Environmentの設定例]

ServerType standalone
ServerRoot /etc/httpd/conf
Pidfile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 70
KeepAliveTimeout 5
MinSpareServers 4
MaxSpareServers 20
StartServers 5
MaxClients 80
MaxRequestsPerChild 100
(LoadModule以下はデフォルトのままで良い。)

●メインサーバ機能設定。

httpd.confの、'Main' server configurationは、ポートやユーザグループの一般項目、
ディレクトリアクセス制限、モジュール、ディレクトリに関する設定となる。

[メインサーバ機能設定]

・Port
通常はデフォルトの「80」で良いものとする。

・Listen
SSLを使用する場合のポート番号を指定。

・User、Group
apacheが動作するユーザ権限、グループ権限を指定。
apacheをソースからインストールの場合、User、Groupが、apache apahceになっている場合は、
デフォルトのままで良いものとする。
インストールによっては、User、Groupが、nobody nobodyになることもある。
この場合は、nobody nobodyで指定しても良いが、PostgreSQLとの連携では、
su postgresになり、createuser nobodyにて、その後のメッセージに順に、
「y」、「n」を指定するものとする。
これで、apacheのnobodyユーザがPostgreSQLに登録される。
よって、apacheがPostgreSQLに接続できる。
(nobodyユーザをLinuxのユーザとしても登録しておく。
これは、
# useradd nobody
# passwd nobody
なお、ユーザnobodyには、シェルが使用できないようにしておく必要がある。
セキュリティ上のため。

・ServerAdmin
エラーメッセージなどに記載するWeb管理者のメールアドレスを指定。

・ServerName
apacheが動作するサーバ名を指定。例えば、ホスト、linuxで、apacheサーバを構築する場合、
コメントを外してwww.hoge.netを指定すれば、http://www.hoge.net/
というリクエストに対して、ホストlinux上のhttpdが要求を受け付ける。
ただし、これを実行するには、DNS(BIND9)に、C NAMEを登録しておく必要がある。
DNSの設定の前であれば、ホスト名を記述するものとする。

・DocumentRoot
HTMLファイルなどの置くディレクトリ。当サーバ用に変更する必要がある。
もちろんデフォルトのままでも可能。デフォルトの設定では、「/var/www/html」。

[メインサーバ機能設定例]

Port 80
<IfDefine SSL>
Listen 80
Listen 443
</IfDefine>
User nobody
Group nobody
ServerAdmin root@linux.hoge.net
ServerName www.hoge.net
DocumentRoot "/var/www/html"

●アクセス制御設定。

HTMLファイルやCGIスクリプトを置くディレクトリのアクセスを設定するものとする。
AccessFilieNameで、.htaccessと設定した場合、htaccessが存在するディレクトリしか
アクセス制限がかからないので、注意する。
CGIを置くディレクトリには、オプションのExecCGIを記述する。
SSLを使用するときには、Includesを記述する必要がある。
また、書式は、以下のようになる。

<Directory 名称>
ステータス
</Directoy>
アクセス制限をかけるディレクトリを、< > 〜 </>を囲んで記述する。
例えば、<Directory /var/www/html> ... </Directory>で、囲んだ部分では、
/var/www/htmlへのアクセス制限を
設定。

[アクセス制限]

・allow from, deny from
接続を許可(allow),禁止(deny)とするドメイン、IPアドレス、または、ホスト名を設定。

・order
許可(allow),禁止(deny)の、どちらを優先するかを設定。

・allowOverride
.htaccessの設定を上書き(制限)できるのかを設定。
セキュリティ上、通常は、「None」に設定する。

・Options
オプション設定を記述。オプションには下記がある。

・ExecCGI
CGIが利用可能となる。セキュリティ上、特に必要がないディレクトリには、すべて、
deny from allと記述する。

・Includes
SSLが利用可能となる。特に必要がない限り、「Options IncludesNO EXEC」と、
オプションと付け、
#execや#includeによるプログラムの起動を禁止しておく。

・Indexes
ディレクトリに対するアクセスがあった場合、モジュールの、
DirectoryIndexで設定したファイルがない場合いは、ディレクトリ一覧を表示する。

・FollowSymLinks
シンボリックリンク先も参照する。

・All
上記オプションをすべて設定。通常は設定しない。

[.htaccessファイル]

アクセス制限を、httpd.confファイルで行う場合、設定を変更する度に、
apacheサーバを再起動する必要があるが、ディレクトリに「.htaccess」ファイルを置くことにより、
apacheサーバを再起動なしで設定反映することができる。

[アクセス制限設定例]

<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</Directoy>

<Directoy /var/www/cgi-bin>
AllowOverride None
Options ExecCGI IncludesNOEXEC
</Directoy>

<Directory /home/*/www>
Options Includes ExecCGI IncludesNOEXEC
</Directory>

最後の<Directory /home/*/www>は各ユーザのホームディレクトリ内に、
「www」というディレクトリを作成し、そこで、ユーザのHPを公開する場合に設定する。
その中で、SSiと、CGIを利用するための設定例である。
当サーバでは必要がないものとする。

●モジュール、ディレクトリ機能設定。

○<IfModule mod_userdir.c>

クライアントが、「~ユーザ名」を指定したときに参照するディレクトリを指定する。
mod_userdir.cが読み込まれていないと起動しない。デフォルトの「public_html」とすると、
www.hoge.net/~ユーザ名/ という、リクエストがあった場合、ユーザ名のホームディレクトリ内の、
「public_html」ディレクトリ内、index.htmlなどが参照される。また、/home/*/wwwと設定すると、
各ユーザのホームディレクトリ以下の、wwwディレクトリが参照される。
(これには、該当ディレクトリをあらかじめ、作成し、chmod a+xとしておく必要がある。)
複数のユーザのページをサーバで公開する場合には、public_htmlや/home/*/wwwとして設定しておくと
わかりやすい。
ユーザディレクトリに個別のアクセス制限を付けるには、
<Directory /home/*/public_html>〜</Directory>の部分をコメントアウトして、書き換える。

なお、当サーバではユーザごとの設定をする必要は、今のところないものとする。

○<IfModule mod_dir.c>

クライアントがディレクトリにアクセスしてきた場合に参照するファイル名。
複数のファイル名を記述することが可能である。
通常では、「index.html」、「index.htm」。
ここで、「index.php」、「index.cgi」と記述しておくことにより、クライアントが、apacheサーバに、
アクセスしてきたときに、ファイル名を指定しないで、アクセスすることが可能となる。
記述の順番により、ファイルを参照する。(クライアント側)。

記述例:
<IfModule mod_dir.c>
index.php index.html index.cgi
</IfModule>

→ これは、index.phpがなければ、index.htmlを参照。index.htmlがなければ、index.cgiを参照する。
この記述により、ファイル名の指定をしないでも、アクセスが可能となる。

アクセスファイル: http://www.hoge.net/index.php
クライアント側 : http://www.hoge.net/

○AccessFileName
ディレクトリに対するアクセス制限を記述するファイル名を指定。通常では、デフォルトの、
「.htaccess」を指定。

○<Files ~ "~\.ht">
アクセス制限を記述した「.htaccess」ファイルを外部に見せない設定である。
なお、「\」マークは、「バックスラッシュ」である。

○DefaultType text,plain
デフォルトのMIMEのタイプ。

○<IfModule mod_mime_magic.c>
ファイルタイプを記述したファイルを指定する。通常は、デフォルトを指定。

○HostnameLookups
アクセスしたクライアントをログに残す方法を指定。「On」では、DNSに対して、ドメイン名を
引きにくいため、処理速度が低下する原因となる。「Off」では、IPアドレスのみを残すため、
処理速度は向上する。ログファイルには、ホスト名は残らなくなるが、
(/usr/local/apache/bin/logresolv)というツールを使用することにより、ホスト名を追加する
ことが可能となる。

○ErrorLog
エラーログファイル名。通常はデフォルト。

○LogLevel
エラーログに記録する内容の詳しさを指定。通常は、「warn」のままで設定。

○LogFormat
アクセスログのフォーマットを指定。デフォルトのままで設定。

○CustomLog
カスタムログ名を指定。バーチャルホストを運用する場合、ドメインごとにログを取得するには、
この「CustomLog」で指定。

○AddType application/x-httpd-php
PHPを利用可能にするには、コメントを外して、AddType application/x-httpd-php .php を有効
にするものとする。

○AdHandler cgi-script .cgi
CGIを利用可能にするには、コメントを外す。

○AddType text/html .shtml

AddHandler server-parsed .shtml
SSLを利用可能とするには、コメントを外す。

●全体の設定例。

ServerType standalone
ServerRott /etc/httpd/conf
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 70
KeepAliveTimeout 5
MinSpareServers 4
MaxSpareServers 20
StartServers 5
MaxClients 80
MaxRequestsPerChild 100
Port 80

<IfDefine SSL>
Listen 80
Listen 443
</IfDefine>

User nobody
Group nobody

ServerAdmin root@hoge.net
ServerName linux.hoge.net
DocumentRoot "/var/www/html"

<Directory /var/www/html/html>
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</Directory>

<Directory /var/www/html/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>

<Directory /home/*/www>
Options Includes ExecCGI
</Directory>

<IfModule mod_userdir.c>
www
</IfModule>

<IfModule mod_dir.c>
DirectoryIndex index.html index.php index.cgi
</IfModule>

AccessFileName .htaccess

ErrorLog /var/log/httpd/error_log
LogLevel warn
CustomLog /var/log/httpd/access_log common
ServerSignature On

AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php
AddType application/x-tar .tgz
AddHandler cgi-script .cgi
AddType text/html .shtml
AddHander server-parsed .shtml

PHP4 - CSVファイル掲示板
PHP4 - MySQL掲示板

 

Copyright (C) 2007-2008 projectz All Rights Reserved.  Page Top▲