[Dancer-users] deploying multiple dancer websites on localhost with mod_proxy

P Kishor punk.kish at gmail.com
Tue Mar 9 01:07:44 CET 2010

On Mon, Mar 8, 2010 at 5:58 PM, David Precious <davidp at preshweb.co.uk> wrote:
> On Monday 08 March 2010 23:21:00 P Kishor wrote:
>> On Mon, Mar 8, 2010 at 5:04 PM, P Kishor <punk.kish at gmail.com> wrote:
>> > Now, when I point my browser at http://localhost/punkishdance, I get
>> > my website, except...
>> >
>> > the browser can't retrieve stuff under ~/dance/punkishdance/public,
>> > for example, the browser throws a 404 for
>> > http://localhost/punkishdance/public/css/grid.css which is at
>> > ~/dance/punkishdance/css/style.css
>> >
>> > I can't get it directly, and of course, I can't get it included in web
>> > page, via main.tt. How do I correct this?
> Is the file really in $appdir/css/style.css, or did you mean
> $appdir/public/css/style.css?  (It should be the latter).

I meant the latter... yes, the missing file is $appdir/public/css/style.css

>> In fact, the browser is unable to get any file directly from under
>> ~/dance/punkishdance
> Indeed, the only files which should be automatically served are those in
> $appdir/public (for instance, ~/dance/punkishdance/public/).

And, the above is exactly what I am not getting.

> (And, if you're using the new auto_page feature, Dancer will look for a
> matching template in the views dir if no route matched.
> Which leads me nicely on to...
>> > Which brings me to an associated question. I have the following routes in
>> > my app
>> >
>> > get '/:p' => sub {
>> >    pass unless (defined params->{p});
>> >    template 'page', { page => _page(params->{p}), name => params->{p} };
>> > };
> You should find the auto_page feature ideal for that... with that enabled,
> creating $appdir/views/mypage.tt means the a request for /mypage will
> automatically be handled using that view, without you needing to declare any
> route to match it.

What is the auto_page feature, and how do I use it? In any case, I
have my pages in a database, so my logic is, if a page is explicitly
requested as a param in path_info, retrieve that from the db and serve
it up. If no page is defined, then serve a default page.

I have also now discovered that ProxyPass doesn't handle trailing slashes.

    ProxyPass /punkishdance/ http://localhost:3000/
    ProxyPassReverse /punkishdance/ http://localhost:3000/

lets me get to http://localhost/punkishdance/ but not to

I can define two separate rules,

    ProxyPass /punkishdance http://localhost:3000/
    ProxyPassReverse /punkishdance http://localhost:3000/

and that seems to work, but Apache warns me with the following error

[Mon Mar 08 17:34:50 2010] [warn] worker http://localhost:3000/
already used by another worker

Seems like the only way around this is to also involve mod_rewrite with

    RewriteRule ^/punkishdance$ punkishdance/ [R]

and, I was hoping to avoid mod_rewrite completely.

> --
> David Precious <davidp at preshweb.co.uk>
> http://blog.preshweb.co.uk/    www.preshweb.co.uk/twitter
> www.preshweb.co.uk/linkedin    www.preshweb.co.uk/facebook
> www.preshweb.co.uk/identica    www.lyricsbadger.co.uk
>  "Programming is like sex. One mistake and you have to support
>  it for the rest of your life". (Michael Sinz)
> _______________________________________________
> Dancer-users mailing list
> Dancer-users at perldancer.org
> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users

Puneet Kishor http://www.punkish.org
Carbon Model http://carbonmodel.org
Charter Member, Open Source Geospatial Foundation http://www.osgeo.org
Science Commons Fellow, http://sciencecommons.org/about/whoweare/kishor
Nelson Institute, UW-Madison http://www.nelson.wisc.edu
Assertions are politics; backing up assertions with evidence is science

More information about the Dancer-users mailing list