我正在测试使用fcgi部署Dancer的测试器示例。但它只是没有用。 我一直收到错误消息:
File does not exist: /home/tester/MyApp/public/dispatch.fcgi/
但是,这个应用程序可以使用cgi成功运行。我根据舞者的部署手册对http.conf进行了更改。
有人可以指出一些解决方案或可能导致此错误的原因吗?
下面是http.conf:
<VirtualHost *:80>
ServerName localhost
# /srv/www.example.com is the root of your
# dancer application
DocumentRoot /home/tester/MyApp/public
ServerAdmin you@example.com
<Directory "/home/tester/MyApp/public">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
AddHandler fastcgi-script .fcgi
</Directory>
ScriptAlias / /home/tester/MyApp/public/dispatch.fcgi/
ErrorLog /var/log/apache2/MyApp-error.log
CustomLog /var/log/apache2/MyApp-access_log common
</VirtualHost>
谢谢
答案 0 :(得分:1)
我认为ScriptAlias不是您想要使用的。从文档......
ScriptAlias指令与Alias具有相同的行为 指令,除了另外它将目标目录标记为 包含将由mod_cgi的cgi-script处理的CGI脚本 处理程序。
基本上,Apache会查找名为“/home/tester/MyApp/public/dispatch.fcgi/”的目录,并且此目录中的每个文件都通过mod_cgi进行处理。在这种情况下,它无法找到,因为它是一个常规文件。
您是否尝试过使用mod_rewrite?除了我正在使用mod_rewrite
之外,我对于Dancer的httpd配置几乎和你的一样DocumentRoot /home/user/src/MyApp/public
<Directory "/home/user/src/MyApp/public">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
AddHandler fcgid-script .fcgi #using fcgid instead of fastcgi
</Directory>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /dispatch.fcgi$1 [QSA,L]