Question

I am testing to deploy the tester example of Dancer using fcgi. But it just didn't work. I keep getting the error message:

File does not exist: /home/tester/MyApp/public/dispatch.fcgi/

However, this app can run successfully with cgi. And I have made the changes to http.conf according to dancer's deployment manual.

Can someone pointing me to some solutions or possible reasons for this error?

below is the 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>

Thank you

Was it helpful?

Solution

I don't think that ScriptAlias is what you want to be using. From the documentation...

The ScriptAlias directive has the same behavior as the Alias directive, except that in addition it marks the target directory as containing CGI scripts that will be processed by mod_cgi's cgi-script handler.

Basically Apache looks for a directory called '/home/tester/MyApp/public/dispatch.fcgi/' and every file in this dir is processed through mod_cgi. In this case it can't be found since it's a regular file.

Have you tried using mod_rewrite? My httpd config for Dancer is pretty much the same as yours except I'm using mod_rewrite

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]
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top