■■■ApacheとPerl
NetBSDを導入しようと考えた時の目的はすでに達成した。ウインドウズとマッキントッシュでのファイル共有、ついでにネットワークプリント。Xウインドウ上での日本語テキスト入力。ほとんど使っていなかったオールドPBでこれだけできたら十分。
しかし、こうなったら最後に最近の常時接続環境で一般人でも現実のものとなった自家ウェブサーバにも挑戦しておこう。
もちろん最後まで「フリー」にこだわる。NetBSD導入以前ならMacOS標準の「ウェブ共有」ソフトを使っても同じ事が出来たが、どうせならNetBSDでウェブサーバも構築してしまおう。必要なのは2つ。
もちろん、すでにバイナリーセットが用意されているので「パッケージコレクション」からダウンロードしてもいいが、私は正統派のコンパイルを選んだ。(と、言うのはウソで、実は私もパッケージを最初にインストールしたが、どうやっても上手く動作しなかったため、やむなくソースからのコンパイルをせざるを得なくなったのだ。)
いずれも、上記の公式ページから最新版のソースをダウンロードして、圧縮ファイルの展開、Configure、Make、Make Installの順で行う。(説明書参照)
apacheもperlもさすがに枯れているためか、ディフォルトのままでコンパイルしてもエラー一つ出ずにすんなりインストールできた。(時間はシコタマかかる…)
Apacheの設定は、/usr/local/apache2/conf/以下のhttpd.confを編集するが、ほとんどディフォルトのままで、以下の部分を変更しただけだ。
ServerName ○○○:80
私は○○○にはホスト名をそのまま使ったが、「www.yourdomain.co.jp」などという自分のドメインがある人はそれを使うのが正解だろう。コロン以降はポート番号だ。
DocumentRoot "/usr/local/apache2/htdocs"
""の部分を公開したいページのあるディレクトリに変更する。もちろんディフォルトのディレクトリ以下にシンボリックリンクを張ることもできる。
AddDefaultCharset ISO-8859-1
ここは、ウェブページに文字コードの宣言がされていない場合にどの文字コードで表示させるかを設定するところのようだが、ディフォルトのままだと日本語ページが文字化けしたのでコメントアウトした。もちろん「shift-jis」などに変更してもいいと思う。
例によって起動スクリプトを作って、/etc/rc.d/ 以下に置けば起動時に自動的にhttpdが起ち上がるが、手動で起動する場合は、
# /usr/local/apache2/bin/apachectl start
と、入力する。停止する場合は”start”のところをstop
。再起動する場合はrestart
と置き換えればいい。それから、/etc/rc.confに、
# apache=YES
と、一行加えておく。
perlは、ファイル量が大きいのでコンパイルにはかなり時間がかかるが、インストール後の設定はほとんどいらない。ウェブサーバの設定ファイルにCGIを使うことを宣言しておくだけだ。apacheの設定ファイルの以下の部分を、
AddHandler cgi-script .cgi .pl
として、スクリプトのディレクトリのエイリアス(マックで言うエイリアスと同じ意味だ)を、
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
と、いうように、実際にスクリプトを配置するディレクトリに設定する。これでルートディレクトリ(ここではhtdocs)以下に/cgi-bin/××.cgi
とアクセスすると、/usr/local/apache2/cgi-bin以下にある実際の××.cgi
スクリプトが実行できるようになるのだ。
これで、基本的にローカルネットワーク上でウェブページを閲覧する環境はできた。ただし、これを全世界に公開するには、ブロードバンドルータのポートマッピングを適宜設定する必要がある。要するにプロバイダから割り当てられたグローバルIPで呼び出されると、ルータ経由でつながったNetBSDマシンのウェブサーバに接続されるマッピングを行えばいい。もちろんIPアドレスを直接入力せずに「www.yourdomain.com」のようなドメイン名で接続したいなら、それ以前にドメイン名を登録しなくてはならない。
設定が済んだらapacheを再起動して、実際にネットワーク上のウェブブラウザから接続してみる。ローカルIP接続の場合はサーバのIPをアドレス窓に入力すれば接続できるはずだ。ところが、ホスト名で接続した場合、ウインドウズのブラウザならIPで接続したのと同じようにウェブページが表示されるが、マックからだと出来なかった。どこか設定が間違っているかもしれないが、いずれの場合もIPを入力すれば接続できるので、ためしにプロクシ経由で(外部から接続した状態が再現できる)グローバルアドレスを入力してみると、ちゃんとapacheのディフォルトページが表示された。
ついでにperlの動作も確かめておく。マニュアルにならって、上記で設定したcgi-binディレクトリに、
#!/usr/bin/perl print "Content-type:text/html\n\n"; print "<H2>Hello, World.</H2>";
と、書いたスクリプトをfirst.plというファイル名で保存して、ブラウザから実行してみる。もちろんスクリプトのアクセス権が実行可能にしてあることが前提だ。
http://[IPアドレス]/cgi-bin/first.pl
を参照すると、ちゃんと
と、文字列が表示された。でしょ?