Perlを使ったWeb開発のテストサーバ、運用サーバについて

例えば、PHPを使った開発のケースにおいてサーバソフトウェアと言えば、 Apacheオンリーという選択肢だと思うのですが (追記: コメントでいただいたんだけど nginx+fastcgiという選択肢も結構使われてるそうです!) 、 Perlの場合はいろいろたくさんあります。 意外とPerl以外の言語を使っている人はPerlのWeb開発におけるサーバ環境って知らない人が 多いと思うので、僕個人的にどんな物を使っているのかを紹介します。

まずはテスト環境ですが、これはPlackのテストサーバ使ってます。 PSGIというWebアプリケーションとサーバソフトをつなぐ規格が定義されているので、 テスト環境で動かすサーバと本番環境で動かすサーバが違ってもアプリの挙動は全く同じだったりします。

お手軽に試すにはMacのTerminalでcpanmというコマンドを入れてから、

$ cpanm Plack

とPlackを入れてみてください。

そしてこれは全く推奨されていませんが、直でPSGIのアプリを書いてしまうHello Worldを動かしてみます。 実際のアプリケーション開発ではPSGI互換のWeb Application Frameworkを必ず使ってください。

my $app = sub {
    return [ 200, [ 'Content-Type' => 'text/plain' ], ['Hello World'] ];
};
$app;

そしてplackupというコマンドでテストサーバを起動。ポート番号をあえて指定しています。

$ plackup -p 5001 helloworld.psgi

すると 5001 番ポートで起動したlocalhostとかにサーバが立ち上がります。

plackup

「http://localhost:5001/」とかにアクセスすれば、「Hello World」が見れるはずです。

$ plackup -p 5001 -r helloworld.psgi

という風に「-r」オプションをつければ、psgiファイルと「./lib」ディレクトリ以下を監視して、更新があったら再起動とかしてくれます。他のオプションはヘルプを見てください。

次に本番環境。これは様々な流儀があると思いますが、僕はフロントエンドとバックエンドと分けて運用しています。 静的ファイルのサーブやヴァーチャルホストの解決などはApacheやnginxに行い、リバースプロキシなどで、 アプリ部分はバックエンドのサーバでまかないます。 バックエンドのサーバにはPerl製の「Starman」を使っています。 CPANモジュールなので、

$ cpanm Starman

でインストールされ、starmanコマンドで.psgiファイルを指定します。 運用の際に欠かせないのが、 starmanコマンドをデーモン化するdaemontoolsです。 僕はdebianのaptでインストールできるdaemontoolsをそのまま使ってます。

$ sudo apt-get install daemontools-run

すると /etc/service というディレクトリができるので、

/home/www-data/daemontools/sugokuii_web

とかってディレクトリを作ってその中に実行権限を与えた run ファイルを以下のように作ります。

#!/bin/sh
exec 2>&1
cd /home/www-data/www/sugokuii
exec setuidgid www-data starman sugokuii_web.psgi --p 8000 --workers 10

そして そのディレクトリを /etc/service 以下にシンボリックリンクを張れば自動的に起動される、もしくはプロセスが死んでも復活するようになります。 細かいログの取り方などは調べて見てください。

本番環境をまとめると

  • フロントはnginxかApache
  • バックエンドはdaemontoolsでデーモン化したStarman

ということになります。

ここまでやるには知識が必要だったり、環境もroot権限が必須だったりするので、 大変かもしれませんが、今はVPSも安いですからねー。 また、RubyやPythonも似たような環境があると思います。 ということで最近の個人的なWebサーバ事情でしたー。

Perl のエントリー

プロフィール

yusukebe

ゆーすけべー / yusukebe
Yusuke Wada / 和田裕介
1981/12/23 生
天然パーマ Erogeek
HP Twitter mixi はてブ
facebook GitHub
yusuke (at) kamawada.com
more...

TENGAちゃん

[PR] iPhoneで出会い系 iPhoneでも出会い系ができる!

[PR] 無料ライブチャット 無料ライブチャットを楽しもう!