Блог

Быстрое разворачивание Mojolicious-приложения в облаке Heroku



Сегодня наткнулся на замету SRI в его блоге Mojolicious in the cloud: Hello Heroku! blog.kraih.com/mojolicious-in-the-cloud-hello-heroku и сам решил попробовать задеплоить на Heroku «Hello World!» приложение! Поехали!

  • Создаем аккаунт на Heroku api.heroku.com/signup
  • Устанавливаем консольный клиент для Heroku toolbelt.herokuapp.com/
  • Авторизуемся на Heroku через консольный клиент (вводим указанный при регистрации email и пароль):
    $ heroku login

Для запуска приложения на Heroku необходимо все три файла:

  1. Файл самого приложения
  2. Файл «Makefile.PL» содержащий список зависимостей нашего приложения
  3. Исполняемый файл «Perloku», который «расскажет» Heroku как запустить веб-севрвер для нашего приложения

Создадим простое Mojolicious-приложение (назовем его «engine») и все необходимые файлы.

$ mkdir engine
$ cd engine
$ touch engine.pl
$ touch Makefile.PL
$ touch Perloku
$ chmod +x Perloku
$ chmod +x engine.pl

Обратите особое внимание на две последние команды (без них ничего не работает):
$ chmod +x Perloku
$ chmod +x engine.pl

В файле «engine.pl» напишем код простейшего Mojolicious::Lite-приложения:

#!/usr/bin/env perl
use Mojolicious::Lite;

get '/' => {text => 'Hello Xoma Engine! Follow me <a href="http://twitter.com/xomaa/">http://twitter.com/xomaa/</a>'};

app->start;


В файле «Makefile.PL» укажем зависимости нашего приложения (нам необходим только Mojolicious версии 2.98):

#!/usr/bin/env perl
use ExtUtils::MakeMaker;

WriteMakefile(
  PREREQ_PM => {'Mojolicious' => '2.98'}
);


В файле «Perloku» укажем как запустить веб-сервер для нашего engine:

#!/bin/sh
./engine.pl daemon -l http://*:$PORT -m production


Готово! Деплоим в облако!

$ git init
$ git add.
$ git commit -m 'Initial version'
$ heroku create -s cedar --buildpack github.com/judofyr/perloku.git
$ git push heroku master

Должны получить примерно вот такой вывод:

-----> Heroku receiving push
-----> Fetching custom buildpack… done
-----> Perloku app detected
-----> Vendoring Perl
Using Perl 5.14.2
-----> Installing dependencies
--> Working on /tmp/build_33g9zcnlzbkzt
Configuring /tmp/build_33g9zcnlzbkzt… OK
==> Found dependencies: Mojolicious
--> Working on Mojolicious
Fetching search.cpan.org/CPAN/authors/id/T/TE/TEMPIRE/Mojolicious-2.98.tar.gz… OK
Configuring Mojolicious-2.98… OK
Building Mojolicious-2.98… OK
Successfully installed Mojolicious-2.98
<== Installed dependencies for /tmp/build_33g9zcnlzbkzt. Finishing.
1 distribution installed
Dependencies installed
-----> Discovering process types
Procfile declares types -> (none)
Default types for Perloku -> web
-----> Compiled slug size is 12.4MB
-----> Launching… done, v4
simple-beach-6843.herokuapp.com deployed to Heroku

Как видим, используется Perl 5.14.2 (очень хорошо!) и установка Mojolicious прошла успешно!

Проверяем результат simple-beach-6843.herokuapp.com/

Вот так буквально за 5 минут мы создали и развернули работающее веб-приложение на Perl и Mojolicious!

Со всеми возможностями облачной платформы Heroku стоит ознакомиться более подробно, о чем, возможно, будут еще заметки.