10

Plack::Builderでは、複数のホストをマウントできます。たとえば、次のスニペットのようなものです。

my @sites = load_site_names();
my $apps;
for my $site (@sites) {
    $apps->{$site} = Some::PsgiFramework::MyApp->new( config => get_config($site) );
}

use Plack::Builder;
builder {
    for my $site (@sites) {
        mount "$site" => $apps->{$site};
    }
    mount '/' => sub { ... };
}

例えば

  • は、、、...load_site_namesのようなサイトのリストを返します。http://example.comhttp://some.other.site.com
  • すべての「仮想ホスト」は同じものを使用しますSome::PsgiFramework::MyApp
  • 設定が違うだけ

私は正確に上記を必要としています - 異なる(トラフィックの少ない)サイトのハンダートに展開する必要がある1つの単純なWebアプリを開発する必要があり、サイトごとに異なるPSGIサーバーをセットアップしたくない.

ただし、Plack 自体の作成者は ( Plack::Requestで)と述べています。

このモジュールは、アプリケーション開発者 (エンド ユーザー) ではなく、Plack ミドルウェア開発者および Web アプリケーション フレームワーク開発者によって使用されることを意図していることに注意してください。

Plack::Request を使用して Web アプリケーションを直接作成することは確かに可能ですが、お勧めしません: mod_perl の Apache::Request: でそうするようなものですが、レベルが低すぎます。

フレームワークではなく Web アプリケーションを作成している場合は、PSGI ( http://plackperl.org/#frameworks )をサポートする Web アプリケーション フレームワークの 1 つを使用するか、HTTP::Engine などのモジュールを参照することをお勧めします。 PSGI の上に高レベルのリクエストおよびレスポンス API を提供します。

そして、これが問題です。

MetaCPAN でさまざまな PSGI ベースのフレームワークの多くをチェックしました。そして、AFAIKはそれぞれシングルトンベースです。たとえば、同じapp.psgi.

質問は次のとおりです。

  • MetaCPAN (またはドキュメント) で何かを見逃していました。ここ 、?app.psgi
  • または私は開発を余儀なくされていJust Another My Own PSGI Frameworkますか?(正直、触媒は重すぎてチェックしていません)
  • それとも「取り付け」をよく理解していませんか?
4

2 に答える 2