Perl - Catalyst


Установка через пакеты в Ubuntu 16.04


sudo apt-get update && sudo apt install make build-essential

Если не находит модули, можно захордкодить перменные окружения (но лучше всетаки не стоит)


PERL5LIB="/home/avis/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB; PERL5LIB="/home/avis/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}" >> ~/.bashrc

Обычно установка сводиться к


sudo apt-get install libcatalyst-perl

Но если чего начинает не хватать, то


sudo apt-get install libcatalyst-perl libcatalyst-devel-perl \
libcatalyst-plugin-static-simple-perl libcatalyst-plugin-configloader-perl \
liblib-abs-perl \
libcatalyst-action-renderview-perl

Для большинства задач хватает.

Если же в пакетах нет, и лень собирать свои, то качаем с цпана


curl -L cpanmin.us | sudo perl - -l /usr/share/perl5 App::cpanminus uni::perl local::lib

Создание приложения

Создаем пустое приложение


catalyst.pl MyApp

Проверяем


perl MyApp/script/myapp_server.pl

В браузере переходим на localhost:3000 или curl localhost:3000

Подрубаем nginx


sudp apt-get install nginx

При переходе в браузере на ip виртуалки, в моем случае http://192.168.16.78/, видим чот сервис стартанул

Создаем свой файл конфига


vim ~/catalyst.conf

upstream dev_backends {
    server     localhost:3000;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    location /      {
        proxy_cache                     off;
        proxy_set_header                Host                        $host;
        proxy_set_header                X-Real-IP                   $remote_addr;
        proxy_set_header                X-User-TimeZone             "Europe/Moscow";
        proxy_set_header                X-Real-IP                   $remote_addr;
        proxy_pass                      http://dev_backends;
    }

}

Вырубаем дефолтную статику и влючаем свой конфиг


sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /home/avis/catalyst.conf /etc/nginx/sites-enabled/
sudo service nginx restart

готово

Подрубаем автостарт через апач


sudo apt-get install apache2 libapache2-mod-perl2

Вырубаем дефлтный конфиг


Запуск

Встроенный веб-сервер


$ perl ./projects/hello-catalyst/MyApp/script/myapp_server.pl
...
[debug] Loaded Path actions:
.-------------------------------------+--------------------------------------.
| Path                                | Private                              |
+-------------------------------------+--------------------------------------+
| /                                   | /index                               |
| /...                                | /default                             |
'-------------------------------------+--------------------------------------'

[info] MyApp powered by Catalyst 5.90103
HTTP::Server::PSGI: Accepting connections at http://0:3000/
^C

Apache

Starman


sudo apt-get install starman

$ starman ./projects/hello-catalyst/MyApp/myapp.psgi -p 3000
...
Error while loading /home/vagrant/projects/hello-catalyst/MyApp/myapp.psgi: Can't locate MyApp.pm in @INC (you may need to install the MyApp module) (@INC contains: /home/avis/perl5/lib/perl5 /home/avis/perl5/lib/perl5 /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /home/vagrant/projects/hello-catalyst/MyApp/myapp.psgi line 4.

хм…



...
$ cat ./projects/hello-catalyst/MyApp/myapp.psgi 
use strict;
use warnings;

use lib::abs qw| ./lib |;

use MyApp;

my $app = MyApp->apply_default_middlewares(MyApp->psgi_app);
$app;