Apache
このページは旧サイトからの転載です。Apache1.3.1のころの情報です。
NetBSD機をWWWサーバにするために、apache を入れました。
家庭内LANでのWWWサーバのメリット †
家庭内LANでWWWサーバを入れても、あまり役に立たないと思われるかもしれませんが 、次のような利点もあります。
ホームページ作成に利用する †
うちでは、ホームページの作成を以下のように行っています。
・ページの更新
好きな時間にLANのWWWサーバ上のホームページを更新します。
ネットワークドライブ(Samba)を使用して、WINDOWS上のエディタで書いています。 (ネットワークドライブを使うことで、サーバ上のファイルを ローカルのハードディスクにあるファイルと同じように扱うことが できます)。
・ページの参照
LAN上の任意のマシン、任意のブラウザで、URLに http://www/~user/index.html などのように ローカルのWWWサーバを指定することで、 普通のページと同じように閲覧できます。
・実際にプロバイダのデータを更新する
テレホーダイ時間になったら、サーバ上の ncftp (UNIXでメジャーな高機能FTPクライアント)を使って転送します。
・CGIのテスト
ホームディレクトリをプロバイダと同じパスにしておけば、 CGI・SSI もそのまま使えます。 さらに、プロバイダが apache を使っているならば、 全く同じ環境にすることもできます。
プロキシサーバにする †
キャッシュを利用します。
接続の為に経由させるという使い方は当然できますが、 NATを使った方が良いので、あまり意味がありません。 また、匿名サーバとしては全く意味がありません。
インストール †
インストールしたバージョンは 1.3.1 です。
NetBSD も対応しているので、何の苦労もなくインストールできます。
# tar zxvf apache_1.3.1.tar.gz # cd apache_1.3.1 # ./configure # make # make install # /usr/local/apache/sbin/apachectl start
PREFIX は指定しないで、デフォルトの /usr/local/apache を使っています。
HTTP サーバ(デーモン)は、apachectl を使って操作します。
普段使うのは、
start restart stop
くらいでしょうか。
# apachectl start
でデーモンを起動してくれます。
# apachectl stop
で停止します。デーモンのプロセスを切ってくれます。
# apachectl restart
再起動です。設定ファイルを変えて再起動したい場合に使えます。
status はデフォルトでは使えません。
CGI/SSI を使う †
SSI を使ったページを .html とすると
[srm.conf]
AddHandler cgi-script .cgi AddType text/html .html AddHandler server-parsed .html
[access.conf]
<Directory /> Options FollowSymLinks ExecCGI Includes </Directory>
Options は All でもいいかもしれません。
ExecCGI がないと、permission が無いと言われます(Error:403)。
Includes がないと、SSI が無視されます。
プロキシサーバにする †
デフォルトでは proxy module が入っていないので、コンパイルし直します。
景気良く行きたいという人は、
# configure --enable-module=all # make # make install
メモリを大量に積んでいる人はフルスペックでも良いかもしれませんが、 普通は必要な機能だけ指定してコンパイルするのが良いでしょう。 また、DSO という動的にモジュールを組み込める機能もあります。
うちはメモリが少ないので、プロキシだけ追加しました。
# configure --enable-module=proxy # make # make install
プロキシを使えるようにします。
[httpd.conf]
ProxyRequests On CacheRoot /usr/local/apache/var/proxy CacheSize 10000 CacheGcInterval 4 CacheMaxExpire 168 CacheLastModifiedFactor 0.1 CacheDefaultExpire 84
キャッシュサイズが10MBにしてあります。 また、保持する時間がかなり長く設定してあります。
ユーザの設定 †
認証(アクセスの制限) †
[.htaccess]
AuthType Basic AuthName private page AuthAuthoritative on AuthUserFile /home/username/public_html/.htpasswd require valid-user
といったところが通常の使い方でしょうか。
AuthUserFile? はフルパスで書きます。うまく読めていない場合には、あらゆるユーザの認証が通りません(読めないから当然)。また、public_html 以下に置く必要はありません。
また、require valid-user は、
<Limit GET> require valid-user </Limit>
のように Limit で囲んで対象を限定することができます。この例では、GET 以外(例えば POST)は認証なしでアクセスできます。
上の場合では、パスワードファイルにある全てのユーザの認証が受け入れられますが、特定のユーザのみにしたい場合には、
require user hoge foo bar
のように指定します(この場合、hoge, foo, bar が使用できる)。
グループによるアクセス制限というのもできますが、それについてはマニュアルを読んでください。
パスワード作成 †
パスワードファイルは以下のように作ります。
例えば、ユーザ名:foo、パスワード:pass、パスワードファイル /home/username/htpasswd.user の場合。
% /usr/local/apache/bin/htpasswd /home/username/htpasswd.user foo
この後にメッセージに従ってパスワードを入力します。パスワードファイルが無い場合には、オプション -c を付けて以下のようにします。
% /usr/local/apache/bin/htpasswd -c /home/username/htpasswd.user foo
また、パスワードファイルを違うOSに持って行っても動かないことがあります。FreeBSDとNetBSD間では動きませんでした。おそらく、FreeBSDのcryptがMD5で、NetBSDがDESであることによるのでしょう。多分FreeBSD<==>Solarisも駄目でしょう。