[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