繁体   English   中英

如何在Apache的多个部署设置中控制Dancer 2(不使用纯CGI)?

[英]How to control using Dancer 2 in a multiple deployment setting with Apache (not using plain CGI)?

我们有一个perl Web应用程序,使用了很长一段时间以来一直使用纯CGI,现在我们正尝试将其他功能(mod_perl,fastcgi,whathaveyou)移植到Dancer 2,以便获得更高的性能。

这是我们现在拥有的Apache设置(我强烈建议使用Starman,但我们希望坚持使用Apache作为我们的Web服务器)

<VirtualHost *>
...
        <Directory "/opt/alDente/versions/DanceApp/public">
                AllowOverride None
                Options +ExecCGI -MultiViews FollowSymLinks
                Order allow,deny 
                Allow from all
                AddHandler cgi-script .cgi
        </Directory>

        ScriptAliasMatch /dance/(.*) /opt/alDente/versions/DanceApp/public/dispatch.cgi/$1
        ProxyPreserveHost On
        ProxyPass /test http://localhost:3000/
        ProxyPassReverse /test http://localhost:3000/
        ...

即使在同一服务器下进行多个部署,部署Dancer 2的简单CGI方法(如上所示)也可以很好地工作。 问题:这样做会使我们的性能提升为零

我还尝试使用默认情况下Dancer 2附带的Simple Web服务器,并让Apache指向它(如上所述)。 它使我们获得了极大的性能提升,并且设置简便。 问题:我们无法使用此设置来设置多个部署,这对我们来说是绝对必须的。 除非我将/test更改为/ (即使我已打开ProxyPreserveHost ),否则内部URL也会被代理搞砸 ,但是出于明显的原因,该ProxyPreserveHost无法用于多个部署。

昨天我也花了整整一天的时间尝试使mod_perl可以与此设置一起使用,但是我读到mod_perl也无法处理同一服务器上的多个部署,也无法使其正常工作。

我也尝试过使用fastcgi设置它(使用舞者2随附的dispatch.fcgi而不是dispatch.cgi),但这似乎并没有提高性能。

我该怎么做才能解决这个问题? 使用Apache和具有的东西,可以在同一台服务器上处理多个部署(由于预算的问题,我们的服务器将要举办的生产,β和α环境)对我们务必

使用mod_proxy在单个Apache接口后面进行多个部署是完全可能的。

每个应用程序的设置都需要更新以使用唯一的端口。 例如,端口3000、4000和5000。

之后,将mod_proxy与以下内容结合使用:

<VirtualHost *:80>
ProxyPass / http://localhost:5000/ retry=0 Keepalive=on
ProxyPassReverse / http://localhost:5000/
ProxyPreserveHost On
ServerName XXXXXXXXXXXXXXXXXXX
TimeOut 300
</VirtualHost>

通过设置ServerName,可以将其绑定到特定的子域。

如果要将其全部绑定到不同的URL,则可以改用Location指令:

<Location /production>
ProxyPass / http://localhost:5000/ retry=0 Keepalive=on
ProxyPassReverse / http://localhost:5000/
ProxyPreserveHost On
ServerName XXXXXXXXXXXXXXXXXXX
TimeOut 300
</Location>

但是,如果您要执行此操作,则Plack支持在App.psgi级别执行此操作,如https://metacpan.org/pod/Dancer::Deployment#In-case-you-have-issues- with-Template :: Toolkit-on-Dotcloud (忽略标题并读取,它是相关的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM