[ re-ordered (again) in a vain attempt to preserve readability ]

Quoting Richard Reina <[email protected]>:

2016-03-08 9:02 GMT-06:00 Dave Cross <[email protected]>:


[ re-ordered to preserve readability ]


Quoting Richard Reina <[email protected]>:

2016-03-08 8:41 GMT-06:00 Dave Cross <[email protected]>:

Quoting Richard Reina <[email protected]>:

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...


_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users

Reply via email to