[dancer-users] Collision of multiple Dancer2 apps using Plack::Handler::Apache2

Alexey Kolganov akalgan at gmail.com
Wed Sep 18 17:44:21 BST 2013


Maybe better to use nginx with it's backends instead of Apache? Or it's not
possible in your situation?


2013/9/18 Juan José 'Peco' San Martín <jsanmartin at gmail.com>

>
> What Pedro said works joining multiple apps in one. More info here.<http://search.cpan.org/~xsawyerx/Dancer2-0.09/lib/Dancer2/Cookbook.pod#Running_multiple_apps_with_Plack::Builder>Thank you!
>
> I have some issues with how each application locates resources. It seems
> that both are using the same paths for libraries or views.
>
> Suppose the next structure:
>
> pathX
>  |__app1
>  |__app2
>
> cd pathX
>
> *plackup -a app.psgi *
> Error while loading pathX/app.psgi: Can't locate App1.pm in @INC ....
>
> *plackup -I app1/lib -I app2/lib app.psgi *
> Route exception: pathX/views/index.tt is not a regular file or
> reference...
>
> How can I establish different environments (and paths) for each app?.
>
> Although this could be very useful, it's not the best solution when you
> want to keep one server with multiple and isolated apps (of different
> developers/teams).
>
> Anyway, thank you!.
>
>
> 2013/9/18 Pedro Melo <melo at simplicidade.org>
>
>>  Hi,
>>
>> On Tue, Sep 17, 2013 at 10:36 AM, Juan José 'Peco' San Martín <
>> jsanmartin at gmail.com> wrote:
>>
>>> I have 2 different Dancer apps (app1 and app2). Each one working very
>>> well on different servers under Apache and Plack::Handler::Apache2.
>>>
>>> Now, I would like put both applications in just one server, so I
>>> adjusted the Apache config just adding the two Location sections.
>>>
>>> If I use the first app, everything works, but when I try the second one,
>>> it seems that Dancer2 (with Plack::Handler::Apache2) still looks for the
>>> paths of the first app (so it fails because it can not find my app2
>>> modules).
>>>
>>> Example (how to reproduce the behaviour)
>>>
>>> 0) Dancer 2.06
>>>
>>> 1) Adjust Apache config to add the Locations of the two apps
>>>
>>> # Apache location
>>> <Location /app1>
>>>     SetHandler perl-script
>>>     PerlHandler Plack::Handler::Apache2
>>>     PerlSetVar psgi_app /path/app1/bin/app.pl
>>> </Location>
>>>
>>> <Location /app2>
>>>    SetHandler perl-script
>>>    PerlHandler Plack::Handler::Apache2
>>>    PerlSetVar psgi_app /path/app2/bin/app.pl
>>> </Location>
>>>
>>> 2) Try app1 => it works!
>>>
>>> 3) Try app2 => fails with the next message: Error while loading /app2/
>>> app.pl: Can't locate App2.pm in @INC (@INC contains /path/app1/lib/
>>> /usr/local....)
>>>
>>> Where App2 is the main module at (app2/lib/) called from app2/bin/app.plafter use Dancer2.
>>>
>>
>> Try this: create a merged.psgi file with this content:
>>
>> use Plack::Builder;
>> use App1;
>> use App2;
>>
>> builder {
>>   mount '/app1' => App1->dance;
>>   mount '/app2' => App2->dance;
>> };
>>
>>
>> And then use it on Apache with:
>>
>> <Location />
>>
>>     SetHandler perl-script
>>     PerlHandler Plack::Handler::Apache2
>>     PerlSetVar psgi_app /path/to/merged.psgi
>> </Location>
>>
>> I have not tested this, I don't have a mod_perl2 at hand anymore, but it
>> should work.
>>
>> Bye,
>> --
>> Pedro Melo
>> @pedromelo
>> http://www.simplicidade.org/
>> xmpp:melo at simplicidade.org
>> mailto:melo at simplicidade.org
>>
>> _______________________________________________
>> dancer-users mailing list
>> dancer-users at dancer.pm
>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>
>>
>
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20130918/7bbc24f3/attachment.htm>


More information about the dancer-users mailing list