このページでは、Plan9のサーバを使って、バーチャルサーバを設定します。ここに来るまでの設定はここを見て下さい
バーチャルサーバの機能としては、自ドメインでのWebサーバ、メールの転送があれば一応の用を果たすでしょう。また、注意点として、他の同居サーバが見えない必要があります。この他のサーバが見えないというのは、UNIX系のOSでは難しいところです。
このページでは、moroo.orgというドメインをバーチャルホスティングすることを例に設定していきます。管理者のIDはmorooとします。
以下の設定はcpu/authサーバのコンソールから行います。というより、コンソールからしか行えません
下記の様にして管理者の ユーザの設定を行います
disk/kfscmd allow disk/kfscmd 'newuser moroo' auth/changeuser moroo 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:Moroo Jun Department #: User's email address: jun@moroo.com Sponsor's email address: user moroo installed for Plan 9
次に、このユーザでログインし、設定をします
/sys/lib/newuser mail -c
メールの受信の設定を行います。
/mail/lib/smtpd.confのourdomainsに自分のドメイン、ここではmoroo.orgを追加します
別名の設定をします。/mail/lib/rewriteに下記の設定を入れます
rewrite:moroo\.org!(.*) translate "/bin/upas/aliasmail -n /usr/moroo/.aliases \1"
ドメインの管理者レベルで別名が設定できる様にします。まず、.aliasesの内容ですが下記の様にします。
/usr/moroo/.aliases.local
別名の設定そのものは.aliases.localに書きます
jun moroo@nifty.com
この設定で、jun@moroo.orgに来たメールはmoroo@nifty.comに転送されます。
/sys/lib/httpd.rewriteに下記の記述を追加します。
http://www.moroo.org /usr/moroo/doc
URLの最後に/をつけると動作しません。
ドキュメントを入れるディレクトリ/usr/moroo/doc/を作成し、index.htmlを置きます。
/sys/lib/httpd.rewrite に下記の設定を追加します。
http://www.moroo.org /virtual/moroo
ディレクトリ/usr/web/virtualを作成します。さらに、/usr/web/virtual/morooを作成します。httpdは起動されたときに/usr/webを/に閉じ込めます。
このままでも誠実なユーザしか使わないのならいいのですが、悪意のあるユーザがいる可能性がありますので、他のユーザ、システムファイルが見えないように名前空間を閉じ込めます。
ユーザがログインする場合、各ユーザのlib/profileが実行されます。そこで、lib/profileをいじって名前空間を閉じ込めてしまいます。
ユーザに見せるのは、/bin と 自分のディレクトリだけにします。
lib/profileを下記のものと置き換えます。
bind -a $home/bin/rc /bin bind -a $home/bin/$cputype /bin bind -c $home/tmp /tmp bind $home/lib/lib $home/lib bind /bin /usr/virtual/bin bind /env /usr/virtual/env bind /tmp /usr/virtual/tmp bind $home /usr/virtual/usr bind /usr/virtual / prompt=('% ' ' ')
ftpしたときに制限されないのでlib/namespace.ftpも操作します
lib/namespace.ftpを置き換えます
# root mount -aC #s/boot /root $rootspec bind -a $rootdir / bind -c #e /env bind $home/lib/lib $home/lib bind -c $home / cd /
現状ではPlan9はDNSのセカンダリサーバになれません。また、ゾーン転送に対応してません。このため、DNSは単独で動かすか、UNIXなどのサーバに頼る必要があります。