我們有一個perl web應用程序,它一直使用普通的CGI,現在我們試圖用其他的東西(mod_perl,fastcgi,whathaveyou)移植到Dancer 2上,這樣我們可以獲得更多的性能。如何通過Apache(不使用普通CGI)在多個部署設置中使用Dancer 2進行控制?
這裏是我們現在有正確的Apache的設置(我知道接龍是一個極力推薦,但我們想堅持到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/
...
部署舞者2的普通的CGI方法(如上所示)工作完全正常,即使在同一服務器下進行多個部署。問題:這樣做會使我們的性能提升零。
我也試過使用默認的舞者2自帶的簡單的web服務器,讓Apache指向它(如上所述)。它使我們獲得了巨大的性能提升,設置簡單易行。問題:我們無法通過此設置獲得多個部署,這對我們來說絕對是必須的。除非我將/test
更改爲/
(即使我開啓了ProxyPreserveHost
),但內部URL 會與代理搞砸,但由於顯而易見的原因,這種情況不適用於多個部署。
我也花了整整一天昨天試圖讓mod_perl使用這個設置,但我讀過mod_perl也無法處理同一臺服務器上的多個部署,並無法讓它正常工作。
我也試着用fastcgi設置它(使用dispatch.fcgi而不是dispatch.cgi,dancer 2自帶),但是這似乎沒有提供任何性能提升。
我能做些什麼來解決這個問題?使用Apache並且擁有能夠在同一臺服務器上處理多個部署的事情(由於預算問題,我們的服務器將不得不託管生產,測試版和Alpha環境)對我們來說是必備。