У нас есть веб-приложение на Perl, которое долгое время использовало простую CGI, и теперь мы пытаемся перенести его на Dancer 2 с чем-то другим (mod_perl, fastcgi, whathaveyou), чтобы повысить производительность.
Вот настройки Apache, которые у нас есть прямо сейчас (я знаю, что Starman настоятельно рекомендуется, но мы хотели бы придерживаться Apache в качестве нашего веб-сервера)
<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/
...
Простой CGI-метод развертывания Dancer 2 (как показано выше) прекрасно работает даже при нескольких развертываниях на одном сервере. Проблема: это дает нам нулевой прирост производительности.
Я также пытался использовать простой веб-сервер, который поставляется с Dancer 2 по умолчанию, и иметь Apache, указывающий на него (как указано выше). Он дает нам большой прирост производительности, прост и удобен в настройке. Проблема: мы не можем настроить несколько развертываний с помощью этой настройки, что для нас абсолютно необходимо. А также внутренние URL-адреса испортятся из-за проксирования, если я не изменю /test
на /
(даже если у меня включен ProxyPreserveHost
), но это по очевидным причинам не будет работать при множественном развертывании.
Вчера я также провел весь день, пытаясь заставить mod_perl работать с этой настройкой, но я читал, что mod_perl также не может обрабатывать множественное развертывание на одном сервере и не может заставить его работать должным образом.
Я также пытался настроить его с помощью fastcgi (используя dispatch.fcgi вместо dispatch.cgi, с которым поставляется dancer 2), но это, похоже, не дало никакого прироста производительности.
Что я могу сделать, чтобы решить эту проблему? Для нас обязательны использование Apache и наличие чего-то, что может обрабатывать несколько развертываний на одном сервере (из-за проблем с бюджетом на нашем сервере должны будут размещаться рабочие, бета- и альфа-среды).