如果我目前在独立的plackup服务器下运行Poet网站(通过run.pl),如何配置Apache2来托管这个Poet网站?
搜索“+ apache2 +诗人”使用Apache2检索大量有关诗人的结果(发表他们的诗歌),以及诸如“Mason 2将与Apache / mod_perl 1一起使用”等文章。然后有一些文件,例如http://metacpan.org/pod/PSGI::FAQ告诉我“在Plack中,我们已经支持像Apache2这样的大多数Web服务器”而没有提供有关如何提供这种支持的任何细节。
为了让现有的Poet网站在Apache下运行,我需要的最小Apache2配置文件是什么?
这是我现有的项目布局:
/Users/me/Documents/Ponies/poet
bin
run.pl
comps
index.mc
conf
data
db
lib
logs
static
t
这是我的启动httpd.conf文件:
LoadModule log_config_module /opt/local/apache2/modules/mod_log_config.so
Listen 5000
ServerRoot /Users/me/Documents/Ponies/poet
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access.log combined
Errorlog logs/error.log
PidFile httpd.pid
LockFile accept.lock
User me
Group staff
<VirtualHost *:5000>
ServerName foo.local
DocumentRoot /Users/me/Documents/Ponies/poet/
AddHandler cgi-script .cgi .pl .py
<Directory "/Users/me/Documents/Ponies/poet">
Options +ExecCGI
</Directory>
</VirtualHost>
只要有一些迹象表明我需要指向Poet网站的哪个部分以获取http://foo.local/ponies/之类的URL来生成由…/Ponies/poet/comps/index.mc
。
答案 0 :(得分:1)
您可以使用mod_perl
。阅读mod_perl quick start guide,然后查看Plack documentation。请注意,Poet环境中所需的密钥文件是bin/app.psgi
。与PSGI规范和Plack文档相关联地研究该文件应该可以帮助您了解正在发生的事情(记住Plack只是PSGI的一个实现)。
为了让您快速入门,请使用以下httpd.conf文件;注意到LoadModule行和VirtualHost内容的替换:
LoadModule log_config_module /opt/local/apache2/modules/mod_log_config.so
LoadModule perl_module /opt/local/apache2/modules/mod_perl.so
Listen 5000
ServerRoot /Users/me/Documents/Ponies/poet
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access.log combined
Errorlog logs/error.log
PidFile httpd.pid
LockFile accept.lock
User me
Group staff
<VirtualHost *:5000>
ServerName foo.local
DocumentRoot /Users/me/Documents/Ponies/poet/
<Location />
SetHandler perl-script
PerlResponseHandler Plack::Handler::Apache2
PerlSetVar psgi_app /Users/me/Documents/Ponies/poet/bin/app.psgi
</Location>
</VirtualHost>
当然,这是一个最低限度的配置,可以让你从plackup
转到与真正默认Poet安装相同的端口5000上的“真实”Web服务器,并且不会考虑像安全性,与多个应用程序共享主机,或网站管理员,系统管理员或网络安全经理希望您考虑的任何其他详细信息。