Perl-Starman (PSGI) + PHP = настройка прокси-сервера Apache2?- Как сделать? - PullRequest
3 голосов
/ 22 ноября 2011

Как работать вместе: PSGI и PHP?

У меня есть приложение Perl / PSGI (работающее на чистом Perl Starman сервере).Теперь по какой-то причине нужно запустить одно приложение PHP; ((поэтому (возможно) нужен Apache2. Вопросы:

  • действительно нужен Apache для PHP? Или существует какое-то другое решение?
  • Как настроить обратный прокси-сервер, чтобы, когда кто-то зашел на http: // mysite / myapp / что-то, был проксирован к Starman, где живет мой PSGI "myapp"?все, что угодно - пойдет в приложение php ...
  • Я могу настроить сервер Starman для прослушивания на другом порту, например, 8080, но хочу получить доступ к обоим приложениям через порт: 80 - поэтому нужен обратный прокси.

Plus:

сервер находится за моим домашним NAT-маршрутизатором. Внутренний сервер имеет адрес: 192.168.1.10, извне, ofc, маршрутизатор имеет правильный интернет-адрес. Я перенаправил весь трафик

routerIP:80 -> 192.168.1.10:80
  • Как лучше всего получить доступ к обоим приложениям: PSGI + PHP с обеих сторон (интернет + "интранет") в порту: 80?
  • Нужно настроить нескольковиртуальные хосты? Или существует какое-то действительно простое решениеon?
  • некоторые ссылки на полезные рекомендации также могут очень помочь.

Ps: мне не нужно оптимизировать производительность, сервер предназначен только для домашнего / демонстрационного / тестирования.

РЕДАКТИРОВАТЬ: Теперь, в другой похожей ситуации, я снова проверил CPAN и, основываясь на ответе @ rawhide, обнаружил модуль Plack :: App :: PHPCGI .Прекрасно работает - это действительно круто тестирование php-приложений под plackup ...;)

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

Вы можете выполнить его как CGI (fork + exec), используя Plack::App::CGIBin или напрямую используя WrapCGI

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

2 голосов
/ 03 декабря 2011

Проще всего было бы запустить Apache2 и PHP на порту 80, установить mod_proxy в процесс Apache и обратный прокси-сервер по пути к бэкэнду Starman. Вы также можете запустить php, используя php-fpm в качестве FastCGI, и сделать то же самое.

Поскольку это демонстрационная цель, вы можете сойти с ума и запустить Starman вместо 80-го порта, а затем использовать Plack :: App :: FCGIDispatcher для «монтирования» PHP-процесса FastCGI. Я пробовал это однажды - это работало хорошо, но, вероятно, только для демонстрационной цели, а не для производственного использования.

...