[英]Best way to run a Plack PSGI Perl application outside of Apache using FastCGI?
我目前正在運行Apache / mod_perl,其中包含由Plack :: Handler :: Apache2調用的PSGI應用程序。 我們遇到的問題是每個Apache進程都消耗與PostgreSQL數據庫的連接,這很昂貴。 為了解決這個問題,我們計划將PSGI應用程序與Apache分開運行,並讓所有Apache進程通過UNIX域套接字與之通信。 在我的案例中你會推薦什么設置?
我的計划是使用plackup運行它:
plackup -s FCGI -E production --nproc 100 --daemonize --listen /tmp/myapp.sock \
/usr/local/bin/myapp.psgi
我問Plack的作者,Tatsuhiko Miyagawa,如果將plackup -s FCGI推薦用於生產目的。 他提供了以下答案:
“雖然它可以用於制作,但我通常建議使用其他專業服務器,如Starman,Starlet或uwsgi.FCGI是一個例外,因為除了默認的Plack :: Handler之外我們沒有特定的FCGI守護進程。我們有一個計划將FCGI拆分出Plack核心並將其作為一個單獨的安裝。“
現在,直到FCGI從Plack中分離出來,問題是,在Apache之外使用FastCGI運行PSGI應用程序的最佳方法是什么?
如果你堅持使用FastCGI協議,可以讓Apache使用連接到外部FastCGI服務器mod_fastcgi
和FastCgiExternalServer
指令(注意mod_fcgid
不支持這種操作模式)。 這應該與Plack內置的FCGI處理程序一起使用。
但正如Tatsuhiko所說,建議使用像Starman或Starlet這樣的服務器作為HTTP上的反向代理。 所以你會在Apache端使用mod_proxy
。 使用Apache 2.4.7,還可以通過Unix域套接字進行通信 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.