サーバ設定と .htaccess

前へ << CGI プログラムからのメール送信 (2) SSI >> 次へ

apache

世の中にはたくさんの WWW サーバが存在しますが、 現在では文句なく apache (アパッチ) がトップシェアを誇っています。 二番手は Microsoft の IIS (Internet Information Service) でしょう。 この 2つの WWW サーバがシェアの 90% 近くを握っており、 それ以外はパっとしません。二強時代と言えるでしょう。
一昔前は CERN httpd と NCSA httpd が2大 WWW サーバでしたが、 今は開発が終了しています。
ここでの解説は全て apache のものですので、注意してください。

apache のインストール

サーバの管理者でなくても、ローカルに WWW サーバがあるとないとでは、 便利さが大きく違います。

FreeBSD ならば、apache の port/package が用意されています。 ここでは package を使う場合、port を使う場合、ソースから コンパイルする場合、の3通りの方法を説明します。NetBSD・ Linux などでは、各環境ごとにバイナリパッケージが用意されている でしょうから、それを利用してもいいですし、ソースから コンパイルしてもよいです。

  1. package を使う場合

    % su (root になる)
    # pkg_add /cdrom/packages/www/apache-1.3.9.tgz
    
  2. port を使う場合
    # cd /usr/ports/www/apache13
    # make
    # make install
    
  3. ソースからコンパイルする場合

    apache-1.3.9.tar.gz を入手し、

    % tar zxf apache-1.3.9.tar.gz
    % cd apache-1.3.9
    % ./configure
    % make
    % su (root になる)
    # make install
    
どの方法でインストールしても、その後にコンフィグファイルを設定しなければいけません。 まず /usr/local/etc/apache/ に移動します (環境によっては /usr/local/apache/conf/ の 場合もあるかもしれません)。すると、 というファイルがあります。これは配布時の設定ファイルなので、 本当の設定ファイルを作ります。
# su (root になる)
# cd /usr/local/etc/apache/
# cp httpd.conf.default httpd.conf
# cp srm.conf.default srm.conf
# cp access.conf.default access.conf
# cp mime.types.default mime.types
# cp magic.default magic

設定すべきファイルは httpd.conf のみです。その他のファイルは いじらなくていいです。httpd.conf について変更する部分は2つあります。 コメントアウトされている ServerName の項目を

ServerName localhost
にします。これはホスト名を localhost に設定します。そのサーバが インターネットに常時接続されているなら、foo.bar.com などという ホスト名を指定してもいいでしょう。次に、
</Directory>
  Options FollowSymLinks
  AllowOverride None
<Directory />
の部分を
<Directory />
    Options All
    AllowOverride All
</Directory>
とします。Options を All にすることで、全ての機能を使えるようにします。 これにより CGI・SSI などが使えるようになります。 そして AllowOverride All とすることで、一般ユーザが自由に設定を 変えられるようにします。つまり ~/public_html/.htaccess による 設定変更を許可する、ということです。

ファイルを書き換えたら、

# /usr/local/sbin/apachectl start (環境によっては /usr/local/apache/bin/apachectl start)
として、apache を実行します。ちゃんと起動しているか どうかは netstat や ps コマンドで確認できます。
% netstat -a -f inet | grep http
tcp        0      0 *.http                *.*                   LISTEN

% ps ax | grep http (SystemV 系なら ps -ef | grep http)
  220  ??  Ss     0:03.17 /usr/local/sbin/httpd
  242  ??  I      0:00.71 /usr/local/sbin/httpd
  243  ??  I      0:00.67 /usr/local/sbin/httpd
                   :
                   :
というふうに表示されれば正常です (httpd のプロセスが複数起動していると思いますが、 それで構いません)。もし動いていないようなら、ログファイルを見ましょう。 /var/log/httpd-error.log (環境によっては /usr/local/apache/logs/error.log) の最後にエラーメッセージがないか確認して下さい。

httpd.conf

apache の設定は /usr/local/apache/conf/httpd.conf というファイルによって行います。 この設定によって、ユーザが CGI を使えるかどうか、 SSI を使えるかどうかが決まります。httpd.conf には

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

<Directory /usr/local/apache/htdocs> Options Indexes FollowSymLinks AllowOverride None </Directory>

<Directory /usr/local/apache/cgi-bin> Options None AllowOverride None </Directory>

とあります。<Directory />〜</Directory> の間は、 ディレクトリ / 以下、つまり全てのコンテンツに関する設定を決めています。 同様に、<Directory /usr/local/apache/htdocs/>〜</Directory> の間は、/usr/local/apache/htdocs/ 以下のコンテンツに関する設定を決めています。

Options は、各種の動作の設定を決める命令で、

を設定することができます。
Options +FollowSymlinks +Includes -ExecCGI
とすると、FollowSymlinks Includes を ON にし、ExecCGI を OFF にします。 この Options で記述しなかった Indexes や MultiViews は変更しません (Indexes/Multiviews は管理者の行った設定がそのまま反映されます)。

Indexes

ファイル一覧表示を許可する。普通、 http://X68000.q-e-d.net/~68user/ などにアクセスすると、 http://X68000.q-e-d.net/~68user/index.html や http://X68000.q-e-d.net/~68user/index.htm が表示されますが、もし index.html や index.htm が存在しないと、 該当ディレクトリの下にあるファイル一覧が表示されます。

Includes

SSI を許可するかどうか。Options +Includes とした場合は、 などが有効になります。IncludesNoExec も参照して下さい。

IncludesNoExec

SSI (Exec 以外) を許可するかどうか。Options +IncludesNoExec とした場合は、 などが有効になりますが、Includes とは違って などの exec 系は使えません。SSI を使って他のファイルを include したいが、 プログラムを実行した結果を取り込む必要はない、という場合に使います。

FollowSymLinks

シンボリックリンクを許可するかどうか。 シンボリックリンクをたどるかどうかを設定します。 なお、シンボリックリンク自体は OS の機能ですから、 いつでも使えます。ここでは web 経由でシンボリックリンクを 辿るかどうかを決めるわけなので、CGI プログラムの中では いつでもシンボリックリンクを使うことができます。

前へ << CGI プログラムからのメール送信 (2) SSI >> 次へ