検索

Google
Web www.icefree.org

RSS of recent changes

 

Apache

2017-06-20 (火) 23:23:54 (1587d)

 このページは旧サイトからの転載です。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も駄目でしょう。

リンク

http://www.apache.org