CGI

CGI を各ユーザのSites で有効にする。
/etc/httpd/httpd.conf
を書き換えた。
Default では、/Library/WebServer/CGI-Executable においたファイルが有効 と設定してあった。
これを、各ユーザのSites/cgi-bin 内に置いたcgiファイルのみ有効にするとした。
/etc/httpd/httpd.conf
の625行目あたり
## 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/” 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” <Directory “/Users/*/Sites/cgi-bin” # AllowOverride None AllowOverride All Options None Order allow,deny Allow from all </Directory> さらに、このサーバ固有の設定が記入されているファイルを/etc/httpd/sites/ からさがした。
0000_192.168.0.2_80_mike.md.tsukuba.ac.jp.conf である。
このファイルに保護領域の設定が記入されている。
このファイルの22行目あたりは、
   <Directory “/Library/WebServer/Documents”> Options All -Indexes +ExecCGI +Includes +MultiViews # AllowOverride None AllowOverride All <IfModule mod_dav.c> DAV On </IfModule> </Directory> となっている。試行錯誤の結果だ。
CGI がうごいていることの確認
test.cgi というファイルを作成する。内容は、
    #! /usr/bin/perl     print “Content-type: text/plainnn”;     print “Hellow World”;     exit; である。改行はUNIXにすること。
  <a href=”cgi-bin/test.cgi”>Test script</a> とどっかのページに書き。これを表示してクリックすれば Hellow World と表示されたページが出現する。これがうまくいけばいい。
CGI エラーログ
○サーバ管理 ー> Web -> ログ -> アクセス
130.158.152.137 – – [22/Jun/2006:08:41:42 +0900] “GET /sigh/cgi-bin/test.cgi HTTP/1.1” 200 24 “-” “Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; ja-JP-mac; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4”
130.158.152.137 – – [22/Jun/2006:08:42:07 +0900] “GET /sigh/cgi-bin/light.cgi HTTP/1.1” 404 – “-” “Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; ja-JP-mac; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4”
130.158.152.137 – – [22/Jun/2006:08:42:15 +0900] “GET /sigh/cgi-bin/bbs/light.cgi HTTP/1.1” 500 629 “-” “Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; ja-JP-mac; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4”
○サーバ管理 ー> Web -> ログ -> エラー
[Thu Jun 22 08:42:07 2006] [error] [client 130.158.152.137] File does not exist: /Library/WebServer/Documents/error.html
[Thu Jun 22 08:42:15 2006] [error] (2)No such file or directory: exec of /Library/WebServer/Documents/sigh/cgi-bin/bbs/light.cgi failed
[Thu Jun 22 08:42:15 2006] [error] [client 130.158.152.137] Premature end of script headers: /Library/WebServer/Documents/sigh/cgi-bin/bbs/light.cgi
文法チェック
# perl -wc [ファイル名]
のコマンドでsyntax error をチェックする
Premature end of script headers というエラーは
1行目の#! /usr/bin/perl が誤りである。
Name “main::mode” used only once: possible typo at init.cgi line 125. というエラーがでても気にしない。これは変数に指定してあるが1回しかつかってないけどいいのか? という意味だから
syntax OK となればいい。
apacheの再起動
# /usr/sbin/apachctl restart
/usr/sbin/apachectl restart:httpd restarted

メール自動転送

メール自動転送
.forward ファイルを各ユーザのroot directory に置けばいい
普通はこれでいいのだが、以前の医学のサーバは送信者のメールのenvelopeのドメインがxxxxxx.xxxx.jpでないとsmtp サーバが受け付けないという設定であったため、大変だった。
なぜ、こんなことをしたかというと、医学のネットワークの維持管理の経費は医学の共通経費からでるのではなく、ユーザが負担することになってるからである。ネットワークを使う者はメールも使う。ユーザがネットワークを使っているかどうかは把握できない。だれでもコンセントにケーブルをつっこめば使えるからである。固定ip address を割り当てればいいが、これが大変だった。勝手にルータのip addressを記入しちゃってめちゃめちゃになったからだ。DHCPサーバを建てた理由である。医学はユーザを特定するのが事実上不可能である。認証サーバの技術はそのころはまだ確立していなかった。というわけで、医学では、医学のsmtpサーバしか使えず、なおかつ医学のドメインのメールでないと通さないということにしたのだ。
ということはこのサーバがが医学外から来たメールをそのまま自動転送するとenvelope は医学外のドメインから来たままだから医学のsmtpサーバを通らない。そこで仕方なくenvelope を書き換えて転送したのである。
現在はこの縛りがなくなったので単純に.forward を作ればいいことになったのだ。縛りをなくしたのは、ほとんどの教員が医学のサーバを利用しているからである。さらにsmtpサーバは医学のしか使えず、使うためにはID、パスワードを必要とするように設定したからである。このサーバ は医学のsmtpサーバにメールを丸投げであるが、医学のsmtpサーバはこのサーバからのメールに対しては制限なしに受け付けているのだ。
.forward の例
hoge@xxxxxx.xxxx.jp
hogehoge@nifty.com
がこのサーバにメールを残すことだ  が¥(半角)と表示される場合がある。

〜のないユーザのWebサイト

ユーザのサイト名に 〜が付かないサイトにする
ユーザのdirectory のエイリアスをトップdirectoryに作って対処する
/Library/WebServerr/Documentsにこのサーバ のトップページがおいてある。
これは サーバ管理−サイト でxxxxxx.xxxx.jp をダブルクリックして一般のタグで開いて
Webフォルダ:/Library/WebServerr/Documents
と設定してあるからである(デフォルトのまま)。
/Library/WebServerr/Documents 内にエリアスファイルを作る。ファイル名は該当するユーザ名(short 名)である。
ターミナルで
/Library/WebServerr/Documents に行き
# ln -s /Users/[ユーザのlong name]/Sites [ユーザのshort name]
ユーザのdirectory のエイリアスをトップdirectoryに作って対処する
/Library/WebServerr/Documentsにこのサーバ のトップページがおいてある。
これは サーバ管理−サイト でxxxxxx.xxxx.jp をダブルクリックして一般のタグで開いて
Webフォルダ:/Library/WebServerr/Documents
と設定してあるからである(デフォルトのまま)。
/Library/WebServerr/Documents 内にエリアスファイルを作る。ファイル名は該当するユーザ名(short 名)である。
ターミナルで
/Library/WebServerr/Documents に行き
# ln -s /Users/[ユーザのlong name]/Sites [ユーザのshort name]
# chown [ユーザのlongname]:[ユーザグループ名] [ユーザのshort name]

mike: /Library/WebServerr/Documents root# lsn ?s /Users/hogehoge/Sites hoge
mike:/ /Library/WebServerr/Documents root# chown hogehoge:students hoge これで、本来は
http://mike.md.tsukuba.ac.jp/~hogehoge/
であるが
http://xxxxxx.xxxx.jp/hoge/
でアクセスできることになる。

ユーザの追加

一般ユーザの追加

○ワークグループ マネージャを使う
基本 名前:誰誰兵  ←漢字可
ユーザID:1027  ←自動的に決まる
ユーザ名:sakuraiterumi, tsakurai  ←最初のは名前から勝手にできるから訂正する、いちど出ると訂正できなくなる。16個まで別名可能
パスワード:xxxxxxx
サーバを管理する:OFF
ログイン:ON
詳細
同時ログインを許可する
シャドウパスワード
グループ プライマリーグループID: 10250 ユーザ名:students または
グループ プライマリーグループID: 20 ユーザ名:staff
Active_member にいれること
ホーム /Users にホームを作成 1000MB
メール 有効  xxxxxx.xxxx.jp 1000MB POPとIMAP
プリント 割り当てなし
Windows 設定しない

メーリングリスト作成

http:/xxxxxx.xxxx.jp/mailman/admin から新規に作る
Name of list:任意
Initial list password: 任意(作成するこのメーリングリストの管理者用)
言語の Japanese にチェックすることを忘れずに
List creator’s (authentication) password: xxxx88←これは管理者だけが知っているやつ
http://xxxxxx.xxxx.jp/mailman/admin
から、該当するメーリングリストの名前をダブルクリックする。
該当リストの管理者のパスワード入力
preffered language からJapanese を選択しsubmitt すると日本語表示になる。
あとはここで設定する。

It's alright, I say It's OK. Listen to what I say.