Plack入門:Plackで静的ファイル配信をする方法

準備:Plackをインストール・起動する

↓こちらの記事を読んで、Plackを起動するところまでやってみてください。

Plack入門:Plackでウェブサーバを起動してhello worldするまで

仕様を決める


あなたのサーバのドメインが http://yourdomain.com だと仮定します。

静的配信
http://yourdomain.com:5000/static/hello.html
でアクセスすると、サーバ内の/tmp/static/hello.html が表示されるようにします。

動的配信
/static/以外のパスへアクセスした場合、すなわち下記のようなURLへアクセスした場合は、
前回の記事で紹介した hello world が表示されるようにします。

http://yourdomain.com:5000/
http://yourdomain.com:5000/hoge/fuga

psgiファイルを作る


下記のコードを static.psgi という名前でホームディレクトリ ~/ に保存します。
(ファイル名や保存場所は何でも構いません)

#!/usr/bin/env perl

use strict;
use warnings;
use Plack::Builder;

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

builder {
    enable "Plack::Middleware::Static",  path => qr{^/static}, root => '/tmp';
    $app;
};
これにより/static/ というURLが、サーバ上の/tmp/static/ と紐付けられます。

静的ファイルを作る

下記ファイルを、/tmp/static/hello.html に保存します。
(/tmp/hello.htmlではないのでご注意を。私はこれで2時間ハマりました。)

plackupコマンドでサーバを起動する


起動します。

$ plackup ~/static.psgi

ブラウザからアクセスして確認します。

plack_static_hello.PNG

おめでとうございます!

成功したら、ファイルシステム上の場所を変更したり、画像やCSSファイルを配信したりしてみましょう。
カテゴリ: