# Deploy LemonLDAP::NG on a Plack server

Plack is a powerful engine that powers many very fast servers. LLNG uses some Plack libraries to run as FastCGI server. So, It can be easily run on these servers. See also Advanced PSGI usage if you want to replace LLNG FastCGI server.

## Complete example

    #!/usr/bin/perl

    use Data::Dumper;
    use Plack::Builder;

    # Basic test app
    my $testApp = sub {
        my ($env) = @_;
        return [
            200,
            [ 'Content-Type' => 'text/plain' ],
            [ "Hello LLNG world\n\n" . Dumper($env) ],
        ];
    };

    # Build protected app
    my $test = builder {
        enable "Auth::LemonldapNG";
        $testApp;
    };

    # Build portal app
    use Lemonldap::NG::Portal::Main;
    my $portal = builder {
        enable "Plack::Middleware::Static",
          path => '^/static/',
          root => '/path/to/portal/htdocs/';
        Lemonldap::NG::Portal::Main->run( {} );
    };

    # Build manager app
    use Lemonldap::NG::Manager;
    my $manager = builder {
        enable "Plack::Middleware::Static",
          path => '^/static/',
          root => '/path/to/manager/htdocs/';
        enable "Plack::Middleware::Static",
          path => '^/doc/',
          root => '/path/to/dir/that/contains/"doc"';
        enable "Plack::Middleware::Static",
          path => '^/lib/',
          root => '/path/to/doc/pages/documentation/current/';
        Lemonldap::NG::Manager->run( {} );
    };

    # Global app
    builder {
        mount 'http://test1.example.com/'   => $test;
        mount 'http://auth.example.com/'    => $portal;
        mount 'http://manager.example.com/' => $manager;
    };

Launch it with Starman for example:

    $ starman --port 80 --workers 32 llapp.psgi