无法使用perl Dancer的fcgi运行应用程序

时间:2013-12-30 18:43:22

标签: perl fastcgi dancer

我正在测试使用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>

谢谢

1 个答案:

答案 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]