[dancer-users] Dancer NGINX configutation
Andrew Solomon
andrew at geekuni.com
Tue Mar 8 16:20:11 GMT 2016
On Tue, Mar 8, 2016 at 3:45 PM, Dave Cross <dave at dave.org.uk> wrote:
>
> [ re-ordered (again) in a vain attempt to preserve readability ]
>
> Quoting Richard Reina <gatorreina at gmail.com>:
>
> 2016-03-08 9:02 GMT-06:00 Dave Cross <dave at dave.org.uk>:
>>
>>
>>> [ re-ordered to preserve readability ]
>>>
>>>
>>> Quoting Richard Reina <gatorreina at gmail.com>:
>>>
>>> 2016-03-08 8:41 GMT-06:00 Dave Cross <dave at dave.org.uk>:
>>>
>>>>
>>>> Quoting Richard Reina <gatorreina at gmail.com>:
>>>>
>>>>>
>>>>> I have the following nginx configuration that I believe -- or at least
>>>>> hope
>>>>>
>>>>> -- serves up my static files, like images ad videos, directly without
>>>>>> invoking my dancer app. Can anyone tells me if this is the case or
>>>>>> not,
>>>>>> or
>>>>>> how I can test to see if they are indeed being served directly by
>>>>>> NGINX?
>>>>>>
>>>>>>
>>>>> Before you go too far down this route, have you considered using
>>>>> Plack::Middleware::Static instead?
>>>>>
>>>>> https://metacpan.org/pod/Plack::Middleware::Static
>>>>>
>>>>>
>>>> Hi Dave,
>>>>
>>>> Thanks for the reply. I think I am already using it via starman.
>>>>
>>>> use Daemon::Control;
>>>>
>>>> use Cwd qw(abs_path);
>>>>
>>>> Daemon::Control->new(
>>>> {
>>>> name => "Starman",
>>>> lsb_start => '$syslog $remote_fs',
>>>> lsb_stop => '$syslog',
>>>> lsb_sdesc => 'Starman Short',
>>>> lsb_desc => 'Starman controls the web sites.',
>>>> path => abs_path($0),
>>>>
>>>> program => '/usr/local/bin/starman',
>>>> program_args => [ '--workers', '3',
>>>> '/home/starman/mydomain/bin/app.psgi' ],
>>>>
>>>> user => 'starman',
>>>> group => 'starman',
>>>>
>>>> pid_file => '/tmp/starman.pid',
>>>> stderr_file => '/tmp/starman.err',
>>>> stdout_file => '/tmp/starman.out',
>>>>
>>>> fork => 2,
>>>>
>>>> }
>>>> )->run;
>>>>
>>>>
>>> I can't see an evidence of you using Plack::Middleware::Static (or,
>>> indeed, any Plack middleware).
>>>
>>> It would't be added to your Starman runner, it would be in your app.psgi
>>> (as described in the Pod that I linked to).
>>>
>>
>> Hi Dave,
>>
>> You are correct. I am obioulsy mistaken. In my development (non
>> production)
>> app which I run on a local machine (not digital ocean) I use plack via
>> plackup -p 5000 bin/app.psgi. However, going through my old notes I now
>> rememeber that I was not able to incorporate plack with my starman
>> configuration above. I tried and for reasons that I cannot remember was
>> unsuccessful and opted for:
>>
>> program => '/usr/local/bin/starman',
>> program_args => [ '--workers', '3',
>> '/home/starman/Almslete/bin/app.psgi' ],
>>
>> Specifically, I believe that I originally tried something like:
>>
>> program => 'plackup -E deployment -s Starman',
>> plackup -E deployment -s Starman --workers=10 -p 5001 -a bin/app.psgi
>>
>> Any advice on how I can move forward on incorporating plack so that I can
>> then incorporate Plack::Middleware::Static would of course be greatly
>> appreciated.
>>
>
> I think we're talking at cross-purposes here.
>
> You don't need to be running plackup in order to use Plack middleware. You
> just need to be running a PSGI app - which you are, it's in your app.psgi.
>
> Assuming that you're using the app,psgi that dancer2 originally generated
> for you, then it will look something like this:
>
> #!/usr/bin/env perl
>
> use strict;
> use warnings;
> use FindBin;
> use lib "$FindBin::Bin/../lib";
>
> use MyWebApp;
> MyWebApp->to_app;
>
> (Obviously substituting the name of your app for "MyWebApp".)
>
> To add Plack::Middleware::Static, you would change it to look something
> like this:
>
> #!/usr/bin/env perl
>
> use strict;
> use warnings;
> use FindBin;
> use lib "$FindBin::Bin/../lib";
>
> use Plack::Builder;
>
> use MyWebApp;
>
> builder {
> enable 'Plack::Middleware::Static',
> path => qr{^/(javascripts|css)/} , root => './public/';
> MyWebApp->to_app;
> };
>
> To (attempt to) be completely clear - you can use Plack middleware with
> any PSGI app. You don't need to be running it under plackup. Running it
> under Starman (or any other PSGI server) will work just as well.
>
> Hope that's clearer.
>
>
> Dave...
>
>
>
Does anyone know the difference in speed of serving static content through
Plack::Middleware::Static vs directly through Nginx? Here's one person's
attempt to get closer to Nginx performance (without saying what that is:)
https://metacpan.org/pod/Plack::Middleware::Static::OpenFileCache
Andrew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20160308/2e5f3ece/attachment.html>
More information about the dancer-users
mailing list