使用 Plack::Handler::Apache2 的 Apache2 的 PSGI 应用程序导致"未找到"



第一次张贴,长期潜伏在这里

我在plackup中使用一个很小的PSGI应用程序,但我想为子域切换到Apache2。我使用'plackup/home/ath88/work/kolle/script/dir运行应用程序。Psgi -port 80'。它可以完美地运行。该应用程序非常简单,可以在https://github.com/ath88/Kolletilmelding/blob/master/script/dir.psgi

找到。

但是,出于明显的原因,我想运行Apache2而不是plackup。为此,我想使用Plack::Handler::Apache2。我的虚拟主机如下所示:

    <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重启正常。但是当我想去拜访他的时候。我只是得到一个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个小时来调试这个。我完全惊呆了。

Edit:原来SIGTERM是从停止Apache2重新启动。我一开始就没反应。愚蠢的我。

也许您的设置将受益于反向HTTP代理设置。

您可以手动启动Plack应用程序,并且可以将其绑定到127.0.0.1:9001而不是127.0.0.1:80,在这种情况下,您需要一个特权用户(TCP端口低于1024)。

那么一个反向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>

相关内容

  • 没有找到相关文章