Pull to refresh

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

Reading time 4 min
Views 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.
Удачи с облаками :-)
Tags:
Hubs:
+19
Comments 11
Comments Comments 11

Articles