[Moscow.pm] Скрипты для запуска Twiggy
Иван Бессарабов
ivan на bessarabov.ru
Пн Сен 17 09:56:23 PDT 2012
Пример того, как можно работать с PSGI приложениями.
1. Нужно поставить Plack, Ubic и Ubic::Service::Plack (ссылки в конце письма)
2. Создать приложения и конфиг файл:
$ cat dog.psgi
my $app = sub {
return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello dog' ] ];
};
$ cat cow.psgi
my $app = sub {
return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello cow' ] ];
};
$ cat /etc/ubic/service/psgi
use Ubic::Multiservice::Simple;
use Ubic::Service::Plack;
my $dir = '/home/bessarabov/';
return Ubic::Multiservice::Simple->new({
cow => Ubic::Service::Plack->new({
server => "HTTP::Server::PSGI",
app => "$dir/cow.psgi",
port => 5001,
}),
dog => Ubic::Service::Plack->new({
server => "HTTP::Server::PSGI",
app => "$dir/dog.psgi",
port => 5002,
}),
});
3. Profit
После этого можно смотреть статус приложения:
$ sudo ubic status
psgi
psgi.cow off
psgi.dog off
ubic
ubic.ping running (pid 10407)
ubic.update running (pid 10411)
ubic.watchdog running (pid 10415)
Можно запустить/остановить приложения по одному (После запуска работу
приложений можно посмотреть браузером по адресу http://localhost:5001/):
$ sudo ubic start psgi.cow
Starting psgi.cow... started
$ sudo ubic status psgi
psgi
psgi.cow running
psgi.dog off
$ sudo ubic stop psgi.cow
Stopping psgi.cow... stopped
Работать сразу со всей группой:
$ sudo ubic status psgi
psgi
psgi.cow off
psgi.dog off
$ sudo ubic start psgi
psgi
Starting psgi.cow... started
Starting psgi.dog... started
$ sudo ubic stop psgi
psgi
Stopping psgi.cow... stopped
Stopping psgi.dog... stopped
В убике еще есть несколько умных штук. Вот презентация:
http://www.slideshare.net/berekuk/ubic-yapc-2012
Конфиг /etc/ubic/service/psgi является perl скриптом. Несложно написать чтобы
он брал данные из какого-то файла с соответствиями порт и psgi файл и добавлял
все эти psgi приложения в ubic.
https://metacpan.org/module/Plack
https://metacpan.org/module/Ubic
https://metacpan.org/module/Ubic::Service::Plack
17 сентября 2012 г., 16:46 пользователь Konstantin S. Uvarin
<khedin на gmail.com> написал:
> Приветствую!
>
> А кто как запускает приложения под Twiggy (ну и вообще PSGI)? Есть какие-то
> стандартные инит-скрипты?
>
> Кросспост со стэковерфлоу:
> http://stackoverflow.com/questions/12454938/init-scripts-for-twiggy-based-
> psgi-apps
>
> В идеале - хотелось бы иметь несколько приложений на разных портах и конфиг
> вида:
>
> dog 5000 /www/psgi/dog.pl
> cow 5001 /www/psgi/holycow.pl
> # ...
>
> и скрипт скрипт в /init.d/, который позволял бы их запускать/останавливать по
>
> sudo service twiggy start
> sudo service twiggy restart dog
>
> и т.д.
>
> Есть ли что-то такое? Нашел аналогичный вопрос про starman, но starman умеет
> опцию --pid, а twiggy за её использованием замечен не был (может, я просто
> ступил и не нашел?).
>
> http://stackoverflow.com/questions/5500943/best-init-script-for-running-an-
> application-as-a-separate-user
>
> --
> WBR,
> Konstantin S. Uvarin
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
Подробная информация о списке рассылки Moscow-pm