Как стать автором
Обновить

Stackato: разворачиваем Perl приложение в своем облаке за 3 шага

Время на прочтение4 мин
Количество просмотров2K
stackato Компания ActiveState хорошо известна разработчикам. Они довольно активно продвигают свои сборки Perl (ActivePerl), Python (ActivePython), Tcl (ActiveTcl) (Раньше был еще ActivePHP, но сейчас его нет). У них есть отличный Komodo IDE и его урезанная бесплатная версия Komodo Edit. И недавно компания предприняла шаги к входу на рынок модных сейчас облачных технологии, но не со стороны создания своих облачных сервисов, а со стороны создания своей софтверной платформы. [Честно говоря, не совсем своей, но об этом далее :-)] Так появилась Stackato — «первая облачная платформа для создания private PaaS с поддержкой Python, Perl, Ruby, Node.js и Java».
Если интересно как создать свое «облачное» Perl приложение, прошу под кат.

Stackato построена на основе Cloud Foundry (и на то были причины) и по сути расширяет Cloud Foundry, добавляя возможность развертывания приложений написанных на Perl и Python.
Архитектура Stackato не отличается от Cloud Foundry, и подробнее о некоторых частях можно прочитать в этом переводе. Я лишь приведу иллюстрацию, описывающую архитектуру, и подробнее останавливаться не буду.
Перейдем к интересному — процессу развертывания perl приложения в Stackato.

ШАГ 0: Получаем инвайт

Stackato находиться в beta версии (недавно перешла из стадии Developer Preview), и для того чтобы попробовать ее в действии нужно получить инвайт. Запросить его можно здесь.

ШАГ 1: Сервер

Для того чтобы попробовать Stackato, необходимо скачать и развернуть Stackato Server VM. Распространяется в 3 форматах: vSphere (OVF), VMware Player and Fusion (VMDK),VirtualBox VM. Системные требования: x86_64 processor, 2GB+ RAM, 3GB+ free disk space
По умолчанию Stackato VM запускается как «micro-cloud». Это позволяет ему функционировать как stand-alone server без каких-либо дополнительных настроек. Имя сервера по умолчанию stackato.local
Сразу после первого запуска существует один пользователь stackato с паролем stackato. Также существует возможность подключение через ssh:
]$ ssh stackato@stackato.local
Для изменения настроек и управления сервером используется команда stackato-admin. Подробнее о параметрах можно узнать так:
]$ stackato-admin help
А в остальном это Ubuntu 10.04 LTS со всеми вытекающими. :-)

ШАГ 2: Клиент

После установки сервера необходимо установить клиентское приложение, готовые сборки которого есть для MAC OS X, Windows и Linux. Также клиентское приложение можно установить с помощью утилиты pypm (ActivePython):
]$ pypm install stackato
возможность установки с помощью ppm (ActivePerl) появится в ближайшее время.
После того как клиентское приложение успешно установлено, необходимо произвести некоторые настройки:
1) Установка target URL — это позволит клиенту stackato узнать, куда следует push'ить приложения. По умолчанию для локального сервера следует использовать api.stackato.local:
]$ stackato target api.stackato.local
2) Регистрация пользователя Stackato. В качестве имени пользователя используется email:
]$ stackato add-user [EMAIL] [--passwd PASS]
3) Вход. Команда регистрации заканчивается автоматическим логином, но если нужно войти под существующем пользователем или изменить текущего пользователя, то используется команда login:
]$ stackato login [EMAIL] [--passwd PASS]
Если нужен список доступных команд или информация по конкретной команде, то необходимо использовать команду help:
]$ stackato help [COMMAND]

Если клиент и сервер установлены и настроены, можно приступать к развертыванию приложения.

ШАГ 3: Развертывание

Процесс развертывания приложений может немного отличаться, в зависимости от зависимостей приложения(извините за каламбур :-)), а точнее от наличия или отсутствия интеграции с различными дополнительными сервисами(например, базами данных). Поэтому хорошим тоном является указание особенностей развертывания (если они есть) в файле README. Существует набор приложений, подготовленных специально для развертывания в Stackato, написанных на различных языках. Их можно найти здесь.К сожалению, среди этих примеров нет приложения использующего Dancer, а я предпочитаю именно этот micro web-framework. Поэтому я написал свое ОЧЕНЬ просто приложение. Его можно посмотреть и скачать здесь.
Прежде чем разворачивать приложение, расскажу немного об особенностях. По сути мое приложение (simpleDancer) является дефолтным приложением, которое вы получите, воспользовавшись командой:
]$ dancer -a appName
Я лишь добавил важные составные части, без которых созданное приложение не запустится в Stackato. Первое — это файл requirements.txt, который содержит список зависимостей, необходимых приложению:
Dancer<br/> YAML<br/> Plack::Request
Все указанные в нем зависимости будут автоматически установлены в процессе развертывания с помощью ppm из репозитория ActiveState, а если там не будут найдены, то с помощью cpanm со cpan.
Второе — это файл app.psgi. Все Perl приложения в Stackato запускаются как PSGI приложения, и стартовый скрипт должен называться app.psgi(или app.pl) и находиться в корне приложения. Т.к. Dancer приложение может без каких-либо изменений запускаться как PSGI приложение, то достаточно было сделать ссылку на ./bin/app.pl.
Теперь, когда все формальности соблюдены, приступим к разворачиванию приложения.
Если мы находимся в корневой папке нашего приложения, то необходимо выполнить следующую команду:
]$ stackato push simpleDancer
где simpleDancer — имя приложения. Необходимо иметь в виду, что по умолчанию приложения разворачиваются с ActivePerl 5.12.4, и если надо использовать ActivePerl 5.14.1, то следует писать так:
]$ stackato push simpleDancer --runtime perl514
После команды push необходимо ответить на несколько вопросов:
В моем случае ответы по-умолчанию подсвечиваются зеленым цветом. Тут особых пояснений, наверное, не требуется, за исключением вопроса: Would you like to bind any services to 'simpleDancer'? Здесь спрашивается, нужен ли будет вашему приложению доступ к какому-либо дополнительному сервису (приложению), такому например как MongoDB или MySQL. И в случае положительного ответа, необходимо будет выбрать из списка доступных:
Если все прошло гладко во время развертывания, то команда apps:
]$ stackato apps
выдаст следующее:
И к приложению можно будет обратиться по адресу: simpleDancer.stackato.local

Если в процессе развертывания что-то пошло не так, или приложение не доступно, то с помощью команды logs можно посмотреть stdout и stderr:
]$ stackato logs simpleDancer
Если ничего полезного найти не удалось, то следует посмотреть еще в двух дополнительных log файлах (staging.log и ppm4.log), доступ к которым можно получить с помощью команды files:
]$ stackato files simpleDancer logs/staging.log<br/> ]$ stackato files simpleDancer logs/ppm4.log

Вот вообщем-то и все, что нужно знать и иметь в виду при работе со Stackato.
Удачи с облаками :-)
Теги:
Хабы:
+19
Комментарии11

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн