Ошибка при развертывании приложения dancer2 - PullRequest
0 голосов
/ 24 марта 2020

У меня есть приложение Dancer2, которое я тестировал локально, и пытаюсь развернуть его на сервере Ubuntu 19.10.

У меня нет ошибок при запуске в качестве автономного приложения с использованием

plackup bin/app.psgi

Однако при запуске с сервером apache я пытался использовать работает как развертывание на плате , используя следующие директивы apache:

<Location /webwork3>
        SetHandler perl-script
        PerlResponseHandler Plack::Handler::Apache2
        PerlSetVar psgi_app /opt/webwork/webwork2/webwork3/bin/app.psgi
</Location>

Я получаю следующую ошибку:

Error while loading /opt/webwork/webwork2/webwork3/bin/app.psgi: Can't locate loadable object
for module main::Tie::Hash::NamedCapture in @INC (@INC contains: /opt/webwork/pg/lib /opt/webwork/webwork2/webwork3/lib 
/opt/webwork/webwork2/lib /usr/lib/x86_64-linux-gnu/perl/5.28.1/auto /etc/perl 
/usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 
/usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 
/usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /etc/apache2)
at /usr/local/share/perl/5.28.1/Dancer2/Core/Route.pm line 101.
Compilation failed in require at /usr/local/share/perl/5.28.1/Dancer2/Core/Route.pm line 101.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.28.1/Dancer2/Core/Route.pm line 101.
Compilation failed in require at /usr/local/share/perl/5.28.1/Dancer2/Core/App.pm line 26.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.28.1/Dancer2/Core/App.pm line 26.
Compilation failed in require at /usr/local/share/perl/5.28.1/Dancer2.pm line 11.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.28.1/Dancer2.pm line 11.
Compilation failed in require at /opt/webwork/webwork2/webwork3/bin/app.psgi line 30.
BEGIN failed--compilation aborted at /opt/webwork/webwork2/webwork3/bin/app.psgi line 30.

Я знаю, NamedCapture имеет и .pm версия в /usr/lib/x86_64-linux-gnu/perl/5.28.1/Tie/Hash/NamedCapture.pm и .so версия в /usr/lib/x86_64-linux-gnu/perl/5.28.1/auto/Tie/Hash/NamedCapture/NamedCapture.so, и оба они в @INC. Кажется, ошибка can't locate loadable object в том, что исполняемый файл не может быть найден, но .pm может.

Они были установлены с модулем libperl5.28 с apt. Я читал, что при установке часто возникает проблема с такой ошибкой.

Я также проверил разрешения для каталогов, и они доступны для чтения всем. Опять же, хотя странно, что он работает под автономным приложением, но не под apache.

...