Perl-Starman(PSGI)+ PHP = Apache2代理设置? - 怎么做?

时间:2011-11-22 14:38:51

标签: php perl apache2 plack

如何一起运行:PSGI和PHP?

我有Perl / PSGI应用程序(在纯perl Starman服务器下运行)。现在,出于某种原因需要运行一个PHP应用程序;(,所以(可能)需要Apache2。问题:

  • 真的需要Apache for PHP吗?还是存在其他一些解决方案?
  • 如何设置反向代理,所以当有人去http:// mysite / myapp / something时,会代理到我的PSGI“myapp”生活的Starman?和
  • http:// mysite / phpapp / anything - 将转到php app ...
  • 我可以将Starman服务器设置为侦听另一个端口,例如8080,但想要在端口访问两个应用程序:80 - 所以需要反向代理。

加:

服务器在我的家庭NAT路由器后面。内部服务器的地址为:192.168.1.10,来自外部,ofc,路由器有正确的互联网地址。我已重定向所有流量

routerIP:80 -> 192.168.1.10:80
  • 访问这两个应用程序的最佳方法是什么:端口的PSGI + PHP(互联网+“内联网”):80?
  • 需要设置一些虚拟主机吗?还是存在一些非常简单的解决方案?
  • 指向有用指南的一些链接也很有帮助..

Ps:我不需要优化性能,服务器仅用于家庭/演示/测试目的。

编辑: 现在,在另一个类似的情况下,我再次检查了CPAN,根据@ rawhide的回答,我找到了Plack::App::PHPCGI模块。效果很好 - 它非常酷在plackup下测试php应用程序......;)

2 个答案:

答案 0 :(得分:4)

您可以使用Plack::App::CGIBin或直接使用WrapCGI将其作为CGI(fork + exec)执行

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

如果rawhide.php没有shebang,你可以使用/usr/bin/php /path/to/rawhide.php

答案 1 :(得分:2)

最简单的方法是在端口80上运行Apache2和PHP,并将mod_proxy安装到Apache进程并反向代理后端Starman的一些路径。您也可以使用php-fpm作为FastCGI运行php,并执行相同的操作。

由于它是一个演示目的,你可以疯狂地在端口80上运行Starman,然后使用Plack :: App :: FCGIDispatcher“挂载”FastCGI PHP进程。我尝试了一次 - 它运行良好,但可能仅用于演示目的,而不是用于生产用途。