Webサーバ 2006.12.9

サーバ管理を開く

サイトで*がついているからこれをダブルクリック

一般

 ドメイン名: seigi.accsnet.ne.jp

  IPアドレス: 192.168.1.3 をプルダウンから選択

 Webフォルダはデフォルトのまま。

 デフォルトの索引ファイルに index.htm 追加。

オプション

 フォルダのリスト表示 off

 WebDAV on

 CGI の実行 on

 Web mail on

 SSI on

 パフォーマンスキャッシュ off

保護領域

 いまのところ設定しない。あとでここのページができたら設定

ログ

 アクセスログ、エラーログとも 7日ごとにアーカイブとし、デフォルトの場所に保存

 フォーマット、レベル はデフォルトのまま。

セキュリティ

 SSL 使用しない

エイリアス

 Webサーバのエイリアスに

 www.seigi.accsnet.ne.jp を登録    そもそも上流のDNSにこれが登録されているから意味ないけど。

 MINE タイプ

とりあえずデフォルトのまま

ウエブログ

 有効にしない。ほかのBlogソフトを導入する予定だから。付属の Blogソフトはめちゃめちゃだからな。

プロキシ

 使用しない

モジュール

 デフォルトのまま。

これで、subnet内からは http://192.168.1.3/ でデフォルトのページが表示される。

/Library/WebServer/Documents/index.html

だ。ここ公開ページを置く。デフォルトでは各ユーザのページは、各ユーザのHome Directory内にあるサイトSites の中身が公開される。そこで

その場合は /~[ユーザ名]/ となる。

$$$$$$$$$$$$$$$$$$$$$$$$$

URLにチルダをつけない方法

この~(チルダ)がいやだというユーザが必ずいるので、各ユーザのサイトフォルダのエイリアスをそのユーザ名にして /Library/WebServer/Documents/ 内におけばいい。

ターミナルを起動し、root権限で /Library/WebServer/Documents の directory で、

#ln -s /Users/[登録名]/Sites [登録名あるいはshort name あるいはあだ名等]

#chown -h [登録名]:[グループ名] [登録名あるいはshort name あるいはあだ名等]

例 登録名が hogehoge short nameがhoge、 グループがtonpu だったら

#ln -s /Users/hogehoge/Sites hoge

#chown -h hogehoge:tonpu hoge

確認すると

lrwxr-xr-x 1 hogehoge tonpu 19Dec 10 10:35 hoge -> /Users/hogehoge/Sites

になっていればシンボリック・リンクの完成だ。大文字小文字は区別されない。

http://192.168.1.3/hoge/ で hogehoge のトップページが表示される。

$$$$$$$$$$$$$$$$$$$$

トップページ と各ユーザのページの関係

トップページは /Library/WebServer/Documents/ 内の index.htm とする。

このページから各ユーザへのページへのリンクの記述は

 <img src="[ユーザ名]/cgi-bin/g_counter/g_counter.cgi">  (カウンターのimage の場合)

    CGIは各ユーザのhome direxctory の cgi-bin だけが有効と設定したからである。

 <a href="[ユーザ名]/100s/100s.html">   (ユーザのリンク先のページの場合)

とする。トップページを書き換えることはめったにない。ftp で上記 directory に転送するように設定するのは面倒だ。書き換える必要があるときは、サーバ上でやればいい。

トップページは /Users/seigi/Sites に転送することにする。

だから http://seigi.accsnet.ne.jp/index.html は http://seigi.accsnet.ne.jp/seigi/index.html と同じだ。トップページに必要な絵もおなじものを /Users/seigi/Sites においておくことにすればいい。

サーバ上でファイルを /Users/seigi/Sites/ から /Library/WebServer/Documents/ に移動すればいい。

どうせトップページを構成するファイル数は少ないのだから。

$$$$$$$$$$$$$$$$$$$$$$$$$$

外部からのアクセスに対しては、ルータがポート80は現在192.168.1.2 をさしているから、ルータの設定を変えて、ポート80は192.168.1.3 にする。これは現在のサーバが192.168.1.2 だからページが完成してからにする。現在の利用者に迷惑をかけてはいけない。(2007.1.5設定済み)

Webページを特定の人・場所だけがアクセスさせる方法

そこで、サーバ管理−Web-サイト から seigi.accsnet.ne.jp をダブルクリックし保護領域で保護領域の下にある+をクリックして設定した。

保護領域名:seigi-user-only (英語でないとブラウザのIDパスワード入力プロンプトが文字化けする)

認証:基本

フォルダ:保護したいフォルダを選択  /Users/[ユーザ名]/Sites/secret とかを選ぶ

これで、seigiに登録したユーザ(アカウントのある人)だけがユーザ名とパスワードを入力すると見ることができる。

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

CGI を各ユーザのSites で有効にする。

/etc/httpd/httpd.conf 

を書き換えた。各ユーザのhome directory の Sites のcgi-bin というdirectory に保存したcgiファイルが使えるようにした。Default では、/Library/WebServer/CGI-Executable においたファイルが有効 と設定してあった。

## ScriptAlias: This controls which directories contain server scripts.

## ScriptAliases are essentially the same as Aliases, except that

## documents in the realname directory are treated as applications and

## run by the server when requested rather than as documents sent to the client.

## The same rules about trailing "/" apply to ScriptAlias directives as to

## Alias.

##

#       ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/" (625行目)

        ScriptAlias /cgi-bin/ "/Users/*/Sites/cgi-bin"

##

## This should be changed to whatever your ScriptAliased

## CGI directory exists, if you have that configured.

##

#       <Directory "/Library/WebServer/CGI-Executables"> (630行目)

        <Directory "/Users/*/Sites/cgi-bin">

                AllowOverride None

                Options None

                Order allow,deny

                Allow from all

        </Directory>

$ perl -wc [ファイル名]

のコマンドでsyntax error をチェックする

$perl -wc httpd.conf

ものすごく一杯でてきた。とりあえず気にしない。

 Premature end of script headers というエラーは

1)1行目の#! /usr/bin/perl が誤りである。

2)2行目に print"Content-type: text/html; charset=Shift_JIS?n?n"; を記述する

3)$ perl -wc [ファイル名]  で

  Name "main::mode" used only once: possible typo at init.cgi line 125.

  というエラーがでても気にしない。これは変数に指定してあるが1回しかつかってないけどいいのか? という意味だから

  syntax OK となればいい。

###################################################################

test.cgi の全文

#! /usr/bin/perl

print "Content-type:    text/plain\n\n";

print "Hellow World";

exit;

この本文の test.cgi というファイルで保存して

<a href="cgi-bin/test.cgi">Test script</a>

ページに書けば  Hellow World と表示される。これがうまくいけばいい。

あるいはいきなりブラウザのURL欄に http://192.168.1.3/seigi/cgi-bin/test.cgi と入力してHellow World と書かれたページが出てくればいい。

BBSの設定

web forum をダウンロードした。

以前のログファイルをそのままコピーして置き換えたら、どれもが new がついて表示されてしまう。

そこで wf_init,cgi の112行目をコメントアウトして、48時間以内の投稿に new をつけるというのをやめにした。

カウンターの設定

g_conter をダウンロードした。

昔のカウントをそのまま維持するためには g_counter.dat に、サーバを新しくした直前数値を入力した。

$$$$$$$$  Webページアクセス制限の要約 はじめ $$$$$$

1)サーバ管理 ー> Web −> サイト −> 保護領域

 ここで  directory を指定、ユーザを指定する。設置名は 英語のみ。

 これが一番簡単。だがphp  cgi で動くページは指定しても有効にならない。

2).htaccess を使う

○ /etc/httpd/http.conf  で、.htaccess   が有効であることを確認する。

/etc/httpd/httpd.conf の内容は

##

## AccessFileName: The name of the file to look for in each directory

## for access control information.

##

AccessFileName .htaccess     (223行目あたり)

##

となっていることを確認する。

○ /etc/httpd/seites/  にあるファイルを書き換える。このdirectory にあるファイルがデフォルトに加筆されたmike 特有の設定である。2つある。

0000_192.168.1.3_80_seigi.accsnet.ne.jp.conf ←これ

virtual_host_global.conf

0000_192.168.1.3_80_seigi.accsnet.ne.jp.confの内容は

             <Directory "/Library/WebServer/Documents">

                Options All -Indexes +ExecCGI +Includes +MultiViews

#        AllowOverride None

                AllowOverride All

                <IfModule mod_dav.c>

                        DAV On

                </IfModule>

        </Directory>

である。

 ● ip address で制限する。 .htaccess の内容は、

Order deny,allow

deny from all

allow from 123.456.789.012

allow from 123.456.123.456

allow from hogehoge.net

123.456.789.012と123.456.123.456のipaddressとhogehoge.netのドメインが許可される。この.htaccessファイルを該当するdirectory におく。

 ● seigi サーバにアカウントのあるユーザで制限する。 .htaccess の内容は、

AuthName Diary ←Diary は自由な名称。ブラウザのID、パスワード要求プロンプトに出てくる名前。

AuthType Basic

<LIMIT GET POST>

require valid-user

</LIMIT>

である。このファイルを該当するdirectory におく。

 ● 複数の特定のユーザに制限する(seigi のID password はそのまま使えない、まったく別のものとなる。同じに設定しても問題ない)。これはまだ試していない。 .htaccess の内容は、

AuthUserFile /usr/local/etc/.htpasswd

AuthGroupFile /usr/local/etc/.htgroupd

AuthName Diary  ← Diary の部分は好きにする

AuthType Basic

<LIMIT GET POST> 

require user  [ユーザ名1]  ←個人とか共通の名前のとき

require group family  ←グループを作り各個人のパスワードが違うとき、family はグループの名前だから自由に設定する。

</LIMIT> 

である。このファイルを該当するdirectory におく。

/usr/local/etc に上記の .htaccess が参照するファイルを作る。

.htgroup と .htpasswd を作る

最初に

# htpasswd -c /usr/local/etc/.htpasswd [ユーザ名1]

として、新しい .htpasswd  ファイルを作る。ユーザ名のパスワードを設定する。

2人目以降は

# htpasswd /usr/local/etc/.htpasswd  [ユーザ名2]

New password:

Re-type new password:

Adding password for user [ユーザ名2] と出力される。

とする。

.htpasswd の内容は以下のようになる。

[ユーザ名1]:ovgJKrfrD7hX6

[ユーザ名2]:5.x5y7T2XgYVA

.htgroup  を vi で作成し 以下のように記入する

family: [ユーザ名1]  [ユーザ名2] ←familyは上出設定したグループ名

$$$$$$$$  Webページアクセス制限の要約 おわり $$$$$$


Webmail(Squirrelmail)の容量増加

webmail の添付書類の最大容量はこれまで2MBであった。
これを 20MB まで増加することを試みた。
SquirrelMailの添付ファイル容量を20MBまで許容することにする。といっても、SquirrelMailをいじるわけでなくてphpをいじる(phpのアップロード量の制限だから)

バックアップを作る→修正用にコピーを作る→コピーを変更する→httpdとmail機能を止める→コピーをオリジナルファイル名に変更する→httpdとmail機能をスタート の順である


1)オリジナルのファイルのバックアップとコピー
php.ini がないから php.ini.default をコピーする。アクセス権は444 だからroot が書き換えられるようにmodeを変える。
2)コピーしたファイルを書き換える
/etc で php.ini.copyの以下2行を書き換える。
upload_max_filesize = 20M   489行目
post_max_size = 20M      373行目

phpがアップロードできるファイル容量を20MBに変更したわけだ。

/etc/httpd で httpd.conf.copy の最終行以降に、以下の3行を加える。 コメントを残しておくのがいいだろう。
apacheでのphpの転送制限を50MBに変更したわけだ(1024*1024*50)。

3)サーバ管理で Mail と Web を停止

4)書き換えたファイルをオリジナルのファイル名に変更
/etcで
#mv php.ini.copy php.ini
php.ini のmode を444へ
#chmod 444 php.ini
/etc/httpd で
#mv httpd.conf.copy httpd.conf

6)サーバ管理でMail と Web を起動
php や apache が動いているから、動いているファイルを書き換えるのは良くない。

ブラウザでhttp://seigi.accsnet.ne.jp/webmail/src/login.php にアクセスして、新規のメール作成の画面で最大20MBになっていることを確認する。

ログイン時の画面の絵を変更する。

絵は /usr/share/squirrelmail/images/web_mail_login.jpg であるから 別の絵をここに持ってきて同じ名前にすればいい。

● robot 検索に許可・不許可を設定する

/Library/Webserver/Documents/ に robots.txt を置く

内容は

  User-agent: *
  Disallow: /cgi-bin/


で最後に空白行が必要。パーミッションは644。