[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