<div dir="ltr">Thanks for both of your input, it has really helped a lot.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 13, 2016 at 12:25 AM, Chad Wallace <span dir="ltr"><<a href="mailto:cwallace@lodgingcompany.com" target="_blank">cwallace@lodgingcompany.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, 12 Jul 2016 22:07:56 +0100<br>
janet davis <<a href="mailto:oscarjwoofer@gmail.com">oscarjwoofer@gmail.com</a>> wrote:<br>
<br>
> The only problem is the uri_base doesn't point to the public<br>
> directory in my application root it points to / so no css/js etc.<br>
><br>
> I have:<br>
> ProxyPass /app1 <a href="http://localhost:5000" rel="noreferrer" target="_blank">http://localhost:5000</a><br>
> ProxyPassReverse /app1 <a href="http://localhost:5000" rel="noreferrer" target="_blank">http://localhost:5000</a><br>
> And I can reach app1 on <a href="http://myserver.com/app1" rel="noreferrer" target="_blank">myserver.com/app1</a><br>
><br>
> Is there anywhere in the config that I can specify the correct<br>
> uri_base per app?<br>
<br>
There's the behind_proxy config option (see Dancer2::Config).<br>
<br>
> I will try using Plack Builder with some example apps.  Are there any<br>
> performance implications if I run a lot of Dancer apps in this way<br>
> (15+) alongside my cgi scripts?  I don't want to go down this route<br>
> and then discover that I have issues with server resources.<br>
<br>
I'm guessing you'll get better performance with them combined.  They<br>
should at least use less memory that way, because the single process<br>
would load all modules only once, rather than loading one process per<br>
app, each with its own copy of perl, Plack, Dancer, Moo, etc.<br>
<br>
Adding the mounts with Plack::Builder probably doesn't add too much<br>
overhead.  From what I've seen, Plack and Dancer are both designed to<br>
perform and scale well.<br>
<br>
You could test both methods and compare the results.<br>
<br>
<br>
> On Tue, Jul 12, 2016 at 9:21 PM, Chad Wallace<br>
> <<a href="mailto:cwallace@lodgingcompany.com">cwallace@lodgingcompany.com</a>> wrote:<br>
><br>
> > On Tue, 12 Jul 2016 19:55:31 +0100<br>
> > janet davis <<a href="mailto:oscarjwoofer@gmail.com">oscarjwoofer@gmail.com</a>> wrote:<br>
> ><br>
> > > Hi there,<br>
> > ><br>
> > > I have a web server running Apache with a single vhost that<br>
> > > serves a lot of Perl cgi scripts from cgi-bin.<br>
> > ><br>
> > > I've been trying out Dancer, which I really like, but I can't<br>
> > > figure out the best way to deploy apps in my Apache environment.<br>
> > > I want to keep my Apache cgi configuration to serve legacy<br>
> > > scripts but I want to start building new projects based on psgi<br>
> > > in something like Dancer.<br>
> > ><br>
> > > I want Apache to use www.myserver/cgi-bin/appname/<a href="http://script.pl" rel="noreferrer" target="_blank">script.pl</a> for<br>
> > > old code (which currently works) and www.myserver/app1 for newer<br>
> > > Dancer based apps. Please don't think I'm being lazy by asking, I<br>
> > > have read the documentation and looked at the example for<br>
> > > deploying multiple apps via fcgi but I am still confused as I<br>
> > > have limited experience with Apache - I am working on that.<br>
> > > What's the best way to set this up, bearing in mind that I may<br>
> > > want to run say 10-15 Dancer apps from my server alongside my<br>
> > > cgi-scripts? Do I have to set up a vhost for each app?  I have<br>
> > > Apache::Plack::Handler but I'm not sure whether I should be using<br>
> > > Plack::Builder to mount my apps (which is mentioned in an older<br>
> > > Dancer Cookbook, but not the current deployment guide. Can<br>
> > > someone help me get on the right track please?<br>
> ><br>
> > I'm not sure it matches what you currently have in mind, but what I<br>
> > would do is set up www.myserver/app1 with mod_proxy to a standalone<br>
> > Plack/Dancer process for the app.  You would need something like<br>
> > this in your VirtualHost for each app:<br>
> ><br>
> >     ProxyPass  /app1  <a href="http://localhost:5000/app1" rel="noreferrer" target="_blank">http://localhost:5000/app1</a><br>
> ><br>
> > You'd also have to manage starting, stopping and reloading each of<br>
> > your apps on its own, with a dedicated port, like 5000 in the line<br>
> > above.<br>
> ><br>
> > If you wanted to combine your apps into one, you can do that with<br>
> > Plack::Builder in a single app.psgi script.  Then you get the<br>
> > benefit of only having one script to start and stop, and one port.<br>
> > I currently do that with one of my apps to separate the<br>
> > AJAX-specific stuff, based on code I found in Dancer2::Cookbook[1]:<br>
> ><br>
> > #!/usr/bin/env perl<br>
> ><br>
> > use strict;<br>
> > use warnings;<br>
> ><br>
> > use FindBin;<br>
> > use lib "$FindBin::Bin/../lib";<br>
> ><br>
> > use Plack::Builder;<br>
> > use newtlc;<br>
> > use newtlc::API;<br>
> ><br>
> > builder {<br>
> >     mount '/'    => newtlc->to_app;<br>
> >     mount '/api' => newtlc::API->to_app;<br>
> > };<br>
> ><br>
> ><br>
> > [1]<br>
> ><br>
> > <a href="https://metacpan.org/pod/distribution/Dancer2/lib/Dancer2/Cookbook.pod#App-specific-feature" rel="noreferrer" target="_blank">https://metacpan.org/pod/distribution/Dancer2/lib/Dancer2/Cookbook.pod#App-specific-feature</a><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
<br>
C. Chad Wallace, B.Sc.<br>
The Lodging Company<br>
<a href="http://www.lodgingcompany.com/" rel="noreferrer" target="_blank">http://www.lodgingcompany.com/</a><br>
OpenPGP Public Key ID: 0x262208A0<br>
<br>
_______________________________________________<br>
dancer-users mailing list<br>
<a href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br>
<a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" rel="noreferrer" target="_blank">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br>
</font></span></blockquote></div><br></div>