[Dancer-users] CGI/FCGI deployment & uri_for
Naveed Massjouni
naveedm9 at gmail.com
Sat Jan 1 12:38:50 CET 2011
On Tue, Dec 28, 2010 at 5:53 PM, Robert Olson <bob at rdolson.org> wrote:
> It seems I must be doing something dumb, but I'm not seeing it.
>
> I'm putting up a dancer app for a domain hosted at dreamhost. I created the
> app using the latest 1.2 dancer, and changed the webroot for the domain to
> appdir/public using the DH config panel. The following .htaccess is in
> place:
>
> AddHandler fastcgi-script .fcgi
> Options +FollowSymLinks +ExecCGI
>
> RewriteEngine On
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteRule (.*) /dispatch.cgi/$1 [QSA,L]
>
> Access to the routes works like a champ (including
> Net::Google::FederatedLogin authentication which I may turn into a plugin;
> also thinking about a CGI::FormBuilder plugin like Catalyst's).
>
> However, uri_for returns a path that includes the rewritten path with
> dispatch.cgi in it:
>
> uri_for("/dog") => http://<domain>/dispatch.cgi/dog
>
> I'm assuming it should instead return http://<domain>/dog.
>
> This seems like something there is an easy solution to, but I'm not finding
> it. Does anyone have any advice?
A simple thing that I do when deploying a CGI app is using a soft link
instead of a rewrite rule:
cd /var/www/cgi-bin # your system's cgi-bin may be at a different location
ln -s /path/to/myapp/public/dispatch.cgi myapp
You need to tell your web server to treat '^/myapp' as a cgi script.
Then you can visit http://<domain>/myapp and it will be the root of
your app. uri_for("/dog") should then return
http://<domain>/myapp/dog
I usually deploy as CGI for playing around or for development. When
deploying for production, I use FastCGI, and then it is easy to mount
your app to '/' or '/whatever'.
-Naveed
>
> Thanks,
> --bob
> _______________________________________________
> Dancer-users mailing list
> Dancer-users at perldancer.org
> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users
>
More information about the Dancer-users
mailing list