3

如何一起运行:PSGI 和 PHP?

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

  • PHP 真的需要 Apache 吗?还是存在其他解决方案?
  • 如何设置反向代理,所以当有人访问 http://mysite/myapp/something 时,会被代理到我的 PSGI“myapp”所在的 Starman?和
  • http://mysite/phpapp/anything - 将转到 php 应用程序...
  • 我可以设置 Starman 服务器以侦听另一个端口,例如 8080,但希望在端口: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::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

于 2011-11-22T15:28:06.233 回答
2

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

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

于 2011-12-03T00:45:17.380 回答