ADSLが安くなってきたんで自宅でサーバを上げたいって人は結構いると思います。 このページでは、自宅でお気軽にサーバを上げるにはどうすればいいのかを説明していきます。 サーバの環境ですがこれは私の環境で書いていきます。
以下の説明では、機械のIPアドレスを192.168.1.32と192.168.1.33, ドメイン名はmoroo.nanako.jpとします。
NICはEtherLink IIIが推奨されています。
3C589D 1020-102F IRQ15
こういう至って普通の構成で最終的には自宅でWebサーバ、メールサーバを立ち上げるところまで説明します。なお、DNSも同じ機械で設定します。
外部からの問い合わせに返答するためにはグローバルIPアドレスが割り当てられてなければなりません。通常このグローバルIPアドレスはADSLモデム(ADSLモデムにはモデムにルータの機能を追加したものや、ブリッジとして動作するものなどいくつかの形態があります。以下では簡単のために全てADSLモデムと呼びます)のインターネット側に割り当てられています。外部からの問い合わせに返答する場合、NATを使用して内部のIPアドレスに変換してやる必要があります。
NATの設定は下記の様にします。80番のtcpポートは、Webサーバ、53番のudpポートはDNSです。
port | protocol | IP |
---|---|---|
80 | tcp | 192.168.1.32 |
53 | udp | 192.168.1.33 |
設定ファイルを格納するフロッピーを1枚用意します。本ページから下記のファイルを全てダウンロードしておきます。このドキュメントを置いてあるサーバの制限で、拡張子.txtをつけてありますが、拡張子は削除して保存して下さい。
IPアドレス、ドメイン名、機械の名前、DNSサーバを各自の環境に合わせて書き換え、書き換えた物をフロッピーに保存します。
ここからBootable Floppy イメージを取得します。いくつか質問項目がありますので下記の様に回答します。
freebsd.orgとかからrawriteを拾ってきてFloppy Imageを作ります。
作成したフロッピーで起動します。なお、以下キーボードがUSキーボードの設定になってますので、キーボード表面の刻印と違っているものがあります。これは後で変更します。
起動をすると、メッセージが出てきてグラフィカルウィンドウが立ち上がります。左上のウィンドウに設定を行うための質問が出てきます。まず、partdiskでpartdiskを選択。sdC0を選択。d p1
でp1を削除。d p2
でp2を削除。a p1 0 1024
で全パーティションをPlan9に割り当て。t p1 PLAN9
でp1をPlan9に設定。w
で書き込み。q
で終了
prepdiskを選択。/dev/sdC0/plan9に割り付け。あとで認証サーバに変更するときのために、デフォルトの設定からswapパーティションの最後のセクタを切り取って、nvramを作っておきます。
,9fat 0 20482 ,fs 20482 4052569 ,swap 4052569 4128705
>>> d swap >>> p 9fat 0 20482 (20482 sectors, 10.00 MB) fs 20482 4052569 (4032087 sectors, 1.92 GB) empty 4052569 4128705 (76136 sectors, 37.17 MB) >>> a swap 4052569 4128704 >>> a nvram 4128704 4128705 >>> p 9fat 0 20482 (20482 sectors, 10.00 MB) fs 20482 4052569 (4032087 sectors, 1.92 GB) ' swap 4052569 4128704 (76135 sectors, 37.17 MB) ' nvram 4128704 4128705 (1 sectors, 512 B )
w
で書き込み。q
で終了
mountfsを選択。/dev/sdC0/fsを選択。
configdistを選択。Distributionをnetで選択
confignetを選択。
etherを選択。選択できない場合は、イーサカードの設定が変です。
manualを選択。環境によってはDHCPでもいいです。192.168.1.32/255.255.255.0を与えます。ゲートウェーは192.168.1.1
downloadを選択。しばらく待ちましょう
copydistを選択。またしばらく待ちましょう
bootsetupを選択。で、エラーになるので、別ウィンドウを開き、9fat:
を実行し、/n/9fatをマウント
Enable boot methodでplan9を選択。
finishを選択
フロッピーをいれたままReturnを押す。すると、Feel free to turn off your computerと言われる。これで、電源を落とせます。フロッピーは抜いて下さい。
配付された物より新しい物が配付されているかもしれないので、アップデートします
ベル研のサーバに接続して、最新のパッチを当てます。ここでユーザ登録します。ユーザ名とパスワードを覚えておいて下さい。
/usr/glenda/bin/rc/pull
を実行すると、最新の状態に更新されます。
このところでユーザを作っておきましょう。新しいユーザをjunとします。disk/kfscmd allowを実行しておいて下記の様にします
disk/kfscmd 'newuser jun'
リブートして作成したユーザでログインし、
disk/kfscmd allow /sys/lib/newuser mail -cを実行してユーザディレクトリを作成します。あとでCPUサーバにするので、bootesとnoneの2つのユーザも作っておきます。
rebootします。ユーザはbootesで立ち上げます。rebootしたら、先ほど作っておいたフロッピーをドライブに刺しておきます。
cpu/authサーバ用のカーネルを作成します。この時に、ついでにキーボードの配列もJIS配列に変更します。変更するための方法は大阪府立大学の方法を取りました。
ウィンドウを開いて、次の様にしてカーネルを作ります
a: mkdir cpu cd cpu cp /n/a:/tpauth . cp /n/a:/kbd.c . bind -bc . /sys/src/9/pc cd /sys/src/9/pc mk 'CONF=tpauth' disk/kfscmd allow 9fat: cp 9tpauth /n/9fat/9tpauth
カーネルが2つになったので、立ち上げ時にどちらか選択できる様に設定したplan9.iniと入れ替えます。
cp /n/a:/plan9.ini .
ネットワークファイル、認証ファイル、起動の設定を行っておきます。
cd /lib/ndb cp /n/a:/local . cp /n/a:/external . cp /n/a:/auth . cd /rc/bin cp /n/a:/cpurc .
SSHのキーを作成します。
aux/ssh_genkey chgrp -u bootes /sys/lib/ssh/hostkey.*
認証サーバの場合、il566とtcp567のサービスを停止します。Plan9ではサービスの起動は/rc/serviceに記述されたtcp*, il*で設定します。認証関係は/rc/bin/service.authです。
cd /rc/bin/service.auth mv authsrv.il566 il566 mv authsrv.tcp567 tcp567
nvramに適当なものを書いて次回の立ち上げ時に聞いてくる様にします
echo boo > /dev/sdC0/nvram
この機械は、CPUサーバと認証サーバを兼ねていますのでCPUサーバとしての設定を追加します。
cd /rc/bin/service echo '#!/bin/cpu -R' >il17010 echo '#!/bin/cpu -R' >tcp17010 chmod +x *17010
cronのログを下記の様にして作成できる様にします
cd /sys/log touch cron chgrp -u sys cron chmod a+aw cron
rebootします。bootするカーネルを聞いてきますので、tpauthを選びます。先ほどnvramの内容を変更しておいたので、authid, authdom, secstore key, passwordを聞いてきます。authidには、bootesを与えて下さい。authdomはこの機械の属するFQDNを与えます。secstore key, passwordは適当な秘密のパスワードを与えます。
bad nvram key bad authencation id bad authencation domain authid: bootes authdom: moroo.nanako.jp secstore key: password1 password; password2 kfs...version...time...
ユーザの設定を行います。ユーザの設定は、auth/changeuserコマンドを使います。ここで、bootesも含めてユーザの登録を行います。また、キューにたまったメールの配送をcronでupasが実行します。このため、upasのパスワードの登録も必要となります。
auth/changeuser bootes Password: password Confirm password: password assign Inferno/POP secret? (y/n) y make it the same as the plan 9 password? (y/n) y Expiration date (YYYYMMDD or never)[return = never]: Post id: User's full name:Bootes Department #: User's email address: bootes@moroo.nanako.jp Sponsor's email address: user bootes installed for Plan 9
Plan9 4th Editionで動作するWebサーバには、ベル研究所が配付している物と、愛知大学の有沢さんが配付している物の2つがあります。 ここでは、ベル研の配付している物の設定を行います
webサーバの使用する名前空間の定義は、/lib/namespace.httpdで行います。名前空間は、コンソールが立ち上がった状態が起点となります。今回の設定では単純に/usr/web以下にwebドキュメントを展開しているとします。
この場合、httpdは/usr/webを/にbindするので、/lib/namespace.httpdには空のファイルを置いておくだけになります。
httpdはアクセスされたリクエストごとに/sys/lib/httpd.rewriteに記述されている書き換えを行います。もし、バーチャルホストを行うのであれば、これを書き換えます。特に何もしないのであればnamespace.httpdと同じく空のファイルを置いておきます。
httpdの起動は、cpurcで行います。
アクセス制限を行うときは、そのディレクトリに.httploginファイルを置きます。ファイルの中身は下記のような物です。
'Test Web' foo bar
Test Web
がアクセス制限時に表示される名前、foo
がユーザ名、bar
がパスワードです。パスワードは暗号化しない平文で置きます。実は、アクセスの可否を判断しているのは、同じディレクトリレベルにあるものだけです。従って、下位のディレクトリも保護するためには、.httploginをコピーして置かなければなりません。
CGIは/bin/ip/httpdの下に置きます。/lib/namespace.httpdを書き換えて、適当なディレクトリからbindするのがよいでしょう。
CGIへのアクセスは、常に、http://サーバー/magic/foo の様に行います。fooがCGIのファイルです。
メールサーバの設定では、自分自身にMXレコードを向かせます。そのためには、/lib/ndb/externalのDNSの設定にmx=の設定がある必要があります。また、 NATの設定で、SMTPのポートを設定しておく必要があります。
port | protocol | IP |
---|---|---|
25 | tcp | 192.168.1.32 |
メールの設定ファイルは、/mail/libにあります。設定例を下記に置いておきます。このドキュメントを置いてあるサーバの制限で、拡張子.txtをつけてありますが、拡張子は削除して保存して下さい。
これで当初の目的を達しました
プログラムを取ってきます。
mkdir pegasus cd pegasus hget http://plan9.aichi-u.ac.jp/netlib/pegasus-1.2.tgz > pegasus-1.2.tgz
展開&makeをします
gunzip pegasus-1.2.tgz tar xf pegasus-1.2.tar cd pegasus-1.2 cd httpd mk lib mk disk/kfscmd allow mkdir /usr/local mkdir /usr/local/bin mkdir /usr/local/bin/386 mk install disk/kfscmd disallow
インストール先の準備をします
mkdir /usr/web cd /usr/web mkdir doc mkdir etc mkdir mnt
今回の設定を行うためにいろいろやってみた内容がここにあります。リンクも切れているところがありますし、内容が間違っているところもあります。ご参考にどうぞ。