- Установка через пакеты в Ubuntu 16.04
- Создание приложения
- Подрубаем nginx
- Подрубаем автостарт через апач
- Запуск
Установка через пакеты в 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;