3

一緒に実行する方法: PSGI と PHP?

Perl/PSGI アプリケーションがあります (純粋な perl Starman サーバーで実行されています)。さて、なんらかの理由で、1 つの PHP アプリケーションも実行する必要があります ;( したがって、(おそらく) Apache2 が必要です。質問:

  • PHP 用の Apache が本当に必要ですか? または他の解決策が存在しますか?
  • リバース プロキシをセットアップする方法。誰かが http://mysite/myapp/something にアクセスすると、私の PSGI "myapp" が存在する Starman にプロキシされますか? と
  • http: //mysite/phpapp/anything - php アプリに移動します...
  • 別のポート (8080 など) でリッスンするように Starman サーバーをセットアップできますが、両方のアプリケーションにポート 80 でアクセスしたいので、リバース プロキシが必要です。

プラス:

サーバーは自宅の NAT ルーターの背後にあります。内部サーバーのアドレスは 192.168.1.10、外部からは、ルーターには正しいインターネット アドレスがあります。すべてのトラフィックをリダイレクトしました

routerIP:80 -> 192.168.1.10:80
  • 両方のアプリケーションへのアクセスを実現する最善の方法は何ですか?ポート:80で両側(インターネット+「イントラネット」)からPSGI + PHP?
  • いくつかの仮想ホストをセットアップする必要がありますか? それとも、本当に簡単な解決策がありますか?
  • 役立つガイドラインへのいくつかのリンクも大いに役立ちます..

Ps: パフォーマンスを最適化する必要はありません。サーバーはホーム/デモ/テスト目的のみです。

編集: さて、別の同様の状況で、CPAN を再度チェックし、@rawhide の回答に基づいて、Plack::App::PHPCGIモジュールを見つけました。うまく機能します-plackupの下でphpアプリをテストするのは本当にクールです... ;)

4

2 に答える 2

4

Plack::App::CGIBinWrapCGIを直接使用するか使用して、CGI(fork + exec)として実行できます

my $rawapp = Plack::App::WrapCGI->new(script => "rawhide.php" , execute => 1 )->to_app;
builder {
    mount "/rawhide" => $rawapp ;
};

rawhide.php にシバンがない場合は、/usr/bin/php /path/to/rawhide.php

于 2011-11-22T15:28:06.233 に答える