どこでもCatalystを実験できる環境を整備する
はじめに
実は1週間くらい前にMVCフレームワークのCatalystを研究室にあるFedora Core 4のマシンにひそかにインストールしてみました。Fedora Core 4だと全くトラブルなしでCatalystをインストールできました。そしてHello WorldなCalalystアプリケーションも作ってみました。意外と簡単でした。しかしながら、Catalystをインストールした研究室にあるFedora Core 4のマシンはプライベートIPを持ったマシンなので、このままでは自宅から思う存分Calalystを実験することができません。そこで、このエントリーではCatalystをリモートの環境からでも実験できるようにするための準備方法について説明したいと思います。
coLinuxのインストールで挫折、さてどうする?
id:naoyaさんやid:miyagawaさんは、coLinuxをWindowsにインストールしてlocalhostでごにょごにょするという開発スタイルを取られています。先日、私もcoLinuxのインストールに挑戦して、coLinuxにdebianのイメージをロードさせて、ネットに接続できる所までは設定できました。しかし、開発環境の整備まではできませんでした。もう少したっぷり時間が取れれば、引き続き頑張っても良かったのですが、これ以上時間をかける気にはなりませんでした。
ちょっと冷静に考えてみました。何でcoLinuxに拘っていたのかわからなくなりました。おぃ!
私は以下のような2台のマシンを研究室で所有しています。
labserverは研究室のメンバーが色んなことに利用しているサーバで、私もよくsshでリモートログインしてPerlの勉強をしています。ですが最近はfedoraがあるので、Perlの勉強は主にFedora Core 4が入っているマシンで行っています。(というかRedhat Linux 9でCPANモジュールがちゃんとインストールできないものが多すぎるのでFedora Core 4を使うようになりました) labserverはインターネットから8080番ポートのアクセスを許可していますが、現在は利用されていません。
fedoraはプライベートIPが設定されているので、当然インターネットからのアクセスは受け付けません。なので、Catalystの実験は研究室に行かないとできません。
labserverとfedoraは大学のVPNで接続されており、互いに通信可能です。自宅からfedoraをsshで操作したい時は、まずlabserverにsshでログインします。そして、labserverから再度sshでfedoraにログインしています。
問題は、fedoraでCatalystのhttpd(script/xxx_server.pl)を起動しても、研究室でないとCatalystアプリケーションをテストできないところです。何とかして、危険を承知の上で、Catalystのhttpdをインターネット上から叩けるようにすれば、ひとまずこの問題は解決です。幸いにも、グローバルIPを持っているlabserverは8080番ポートをListenしようと思えばできる状態にあります。これで何とか解決できないものでしょうか...
任意のマシン宛てにTCPポート転送を行うHack
前述した問題を解決するための良い方法がないか、LinuxサーバHacksの本をちょっと読んでみました。そうすると、ちょうど良い解決方法が載っていました。その解決法とは、HACK #48の「任意のマシン宛てにTCPポート転送を行う」というもので、このHackによって別のところにあるサービスを自分が提供しているかのように見せかけることができるようになるそうです。
そこで、早速試してみました。
以下のコマンドをlabserverで行いました。manのインストール場所を少しだけ調整する必要がありました。
$ cd /usr/local/src/ $ wget http://www.boutell.com/rinetd/http/rinetd.tar.gz $ tar -zxvf rinetd.tar.gz $ cd rinetd $ vi Makefile (Redhat Linux 9用にmanのインストール場所を「/usr/share/man/man8」に修正) $ make $ sudo make install $ vi /etc/rinetd.conf 0.0.0.0 8080 fedora 3000 $ sudo /usr/sbin/rinetd
これでlabserverで利用されずにいた8080番ポートに対してインターネットからアクセスがあると、fedoraの3000番ポート(Catalystのhttpdが標準でListenするポート)にトラフィックが転送されるようになります。
前に実験で作ったHello WorldなCalalystアプリケーションのscriptディレクトリにあるhttpdサーバを起動して、インターネットからhttp://labserver:8080で叩いてみると、見事に動作しました。LinuxサーバHacks、ありがとう。
参考文献
- LinuxサーバHacks
- http://www.boutell.com/rinetd/
LinuxサーバHacks―プロが使うテクニック&ツール100選
- 作者: ロブフリッケンガー,Rob Flickenger,山口晴広,イメージズアンドワーズ
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/11/01
- メディア: 単行本
- 購入: 4人 クリック: 56回
- この商品を含むブログ (51件) を見る