2

初めてのポスター、長い間ここに潜んでいます。

plackup で小さな PSGI アプリケーションを使用していますが、サブドメイン用に Apache2 に切り替えたいと考えています。「 plackup /home/ath88/work/kolle/script/dir.psgi -port 80 」でアプリケーションを実行します。それはplackupで完全に動作します。アプリケーションは非常にシンプルで、https://github.com/ath88/Kolletilmelding/blob/master/script/dir.psgiにあります。

しかし、明らかな理由から、plackup の代わりに Apache2 を実行したいと考えています。このために、Plack::Handler::Apache2 を使用したいと考えています。私の VirtualHost は次のようになります。

    <VirtualHost *:80>
      ServerName aths.dk
      ServerAdmin asbjoern@gmail.com
      <Location />
        SetHandler perl-script
        PerlResponseHandler Plack::Handler::Apache2
        PerlSetVar psgi_app /home/ath88/work/kolle/script/dir.psgi
      </Location>
    </VirtualHost>

Apache2 は正常に再起動します。しかし、aths.dk にアクセスしようとすると、単に 404 が見つかりません。500 内部エラーが発生するため、アプリケーションのディレクトリは正しいです。apache2/error.log を見ると、次のようになります: [無関係、編集を参照]

    [Wed Oct 05 21:32:16 2011] [notice] caught SIGTERM, shutting down
    [Wed Oct 05 21:32:17 2011] [notice] Apache/2.2.12 (Ubuntu) mod_perl/2.0.4 Perl/v5.10.0 configured -- resuming normal operations

これは、Apache2 を再起動するたびに発生します。

これをデバッグするのに4時間費やしました。私は完全に頭がおかしいです。

編集: SIGTERM は、再起動のために Apache2 を停止することによるものであることが判明しました。起動すると発生しません。愚かな私。

4

1 に答える 1

2

おそらく、リバース HTTP プロキシのセットアップがセットアップに役立つでしょう。

127.0.0.1:9001Plack アプリケーションを手動で起動し、代わりに にバインドできます127.0.0.1:80。この場合、特権ユーザー (1024 未満の TCP ポート) が必要です。

次に、動作するはずのリバース HTTP プロキシ構成は次のようになります。

<VirtualHost *:80>
        ServerName aths.dk
        ServerAdmin asbjoern@gmail.com

        ErrorLog /var/log/apache2/aths.dk-error.log
        TransferLog /var/log/apache2/aths.dk.log
        DocumentRoot /var/www/aths.dk
        ProxyRequests Off

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPass / http://127.0.0.1:9001/
        ProxyPassReverse / http://127.0.0.1:9001/
</VirtualHost>
于 2011-10-06T08:04:34.830 に答える