- PVSM.RU - https://www.pvsm.ru -
Jelastic стремится сделать использование сложных вещей максимально простым, сократить затраты времени разработчика на рутинные задачи, а также управление процессами и, как результат, увеличить эффективность работы, направленной на саму разработку.
В этой статье мы расскажем о нашем уникальном решении по автоматизации установки приложений в один клик — Jelastic Packaging Standard (JPS). Используя данный метод вы сможете запаковать ваше приложение и предоставить его конечным пользователям уже как готовый продукт.
JPS это стандарт для создания шаблонов полностью настроенных приложений, готовых к установке в облако Jelastic в один клик. Данное решение предоставляет систему автоматической инсталляции Java, PHP или Ruby приложений (а также других языков в будущем).
Предоставленный стандарт упрощает установку и настройку приложения для конечных пользователей. JPS управляет созданием и автоматизацией процесса разворачивания приложения, определяет набор параметров и кластерных настроек по умолчанию, устанавливает количество необходимых ресурсов и лимиты масштабирования для каждого контейнера в окружении с приложением.
С JPS вы можете предложить пользователям виджет для быстрой установки приложения. Это поможет распространить приложение среди более широкой аудитории и значительно увеличить объёмы продаж т.к. избавляет от сложностей установки и настройки, упрощает выбор
Каждый виджет установки содержит манифест приложения (или ссылку на его источник). Код манифеста содержит описание необходимой топологии окружения с инструкциями по установке и настройке приложения. JPS манифест написан в JSON формате.
Для установки запакованного приложения пользователю всего лишь нужно нажать на виджет и ввести свой адрес электронной почты. На указанный имейл будет отправлена ссылка подтверждения. Пройдя по этой ссылке пользователь попадет в панель управления Jelastic для подтверждения установки.
В течении нескольких последующих минут Jelastic завершит установку (время зависит от сложности выбранного приложения). Платформа Jelastic анализирует данные манифеста, подбирает и настраивает нужные ноды (сервера приложений, базы данных, балансировщик нагрузки, и т.д.). В результате пользователь получает полностью налаженное и запущенное приложение без необходимости выполнять какие-либо ручные действия.
Далее вы ознакомитесь с техническими подробностями по подготовке манифеста приложения и виджета, а также с процессом установки в один клик со стороны конечного пользователя.
Перед тем, как запаковывать приложение, мы рекомендуем изначально развернуть его в облаке Jelastic вручную и проверить все необходимые настройки, чтобы в результате указать их в коде манифеста.
Для создания JPS манифеста используется JSON [2] формат (JSON Formatter & Validator) [3]. Данный код должен содержать набор строк, необходимых для успешной установки приложения.
Основой кода являются следующие строки:
{
"jpsVersion":"0.2"
"jpsType": "install",
"application": { }
}
Это обязательная часть пакета приложения, которая содержит информацию о версии JPS и типе установки (метод “install” запускает создание нового окружения, необходимого для разворачивания).
Вышеуказанные основные строки должны быть расширены настройками самого приложения, которое вы запаковываете. Детали конфигурации размещаются в параметре «application»: { }.
Прежде всего, нужно указать общую информацию о приложении, такую как название, версия, тип используемого языка программирования и так далее.
{ application: {
"id":"opencms",
"name":"OpenCMS",
"version":"8.5",
"logo":"",
"type":"java",
"homepage": "",
"description": {
"en": "OpenCMS from Alkacon Software is a professional, easy to use website content management system. OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.",
"ru": "Russian description"
},
"startPage" : "/install.jsp",
"success": {
"text": "Dashboard success text",
"email": "Email success text"
}
}}
Пройдите по ссылке, чтобы детальнее ознакомиться с параметрами описания приложения [4].
Также вам необходимо указать детали об окружении, которое обеспечит оптимальную производительность вашего приложения. Параметры, указанные в этой части кода, будут использованы для создания и настройки подходящего окружения во время установки пакета приложения.
Используя параметр «env»: { } укажите все необходимые значения в соответствии с возможными вариантами, описанными в документе [5]. Данный параметр состоит из следующих разделов:
"topology":{
"ha":value,
"engine":"value",
"ssl":value,
"nodes":[ ]
},
"deployments":[
{
"archive":"value",
"name":"value",
"context":"value"
}
]
"upload":[
{
"nodeType":"value",
"sourcePath":"value",
"destPath":"value"
}
],
"configs":[
{
"nodeType":"value",
"restart":value,
"replacements":[]
"path":"value",
"database":{},
}
]
"env": {
"topology": {
"engine": "php5.3",
"nodes": [{
"extip": false,
"count": 1,
"cloudlets": 16,
"nodeType": "apache2"
}
],
"ssl": false,
"ha": false
},
"deployments": [{
"archive": "http://app.jelastic.com/xssu/cross/download/RDYYHFNuUQYJBFpPZQ08F0UWCRlUHxdBD0ZlTS4gcQJFFBJUDwIBQmNTTEBI",
"name": "Hello World",
"context": "ROOT"
}
],
"configs": []
},
Для получения более детальных инструкций по установке нужных параметров, пройдите по этой ссылке — параметры окружения [5].
JPS поддерживает список плейсхолдеров [6], которые можно использовать в любом разделе JPS манифеста (только если он не ограничен контентом). JPS контроллер попытается обработать все плейсхолдеры на этапе установки пакета. Если это невозможно — плейсхолдер будет необработан и отображен в тексте как есть (например, ${placeholder}).
Чтобы проверить правильность настроек манифеста, используйте следующую ссылку для запуска процесса установки:
http://{hoster_domain}?manifest={manifest_code}
Обратите внимание, что вместо manifest_code рекомендуется использовать ссылку на JSON файл с вашим манифестом.
Представленный ниже пример манифеста для приложения Magento может быть использован как основа при подготовке собственного запакованного приложения.
{
"jpsVersion": "0.2",
"jpsType": "install",
"application": {
"id": "magento",
"logo": "https://app.jelastic.com/xssu/cross/download/RDYYHFNvBFQOA1RKYgFoRhdDWhRTS00RDxZtG34gIlYWHhdXDwIBQmNTTEBI/view",
"description": {
"en": "Magento is the eCommerce software and platform trusted by the world's leading brands. Grow your online business with Magento!"
},
"name": "Magento",
"env": {
"topology": {
"engine": "php5.3",
"nodes": [{
"extip": false,
"cloudlets": 16,
"count": 1,
"nodeType": "apache2"
}, {
"extip": false,
"cloudlets": 16,
"count": 1,
"nodeType": "mysql5"
}
],
"ssl": false,
"ha": false
},
"deployments": [{
"name": "magento-1.7.0.2.zip",
"context": "ROOT",
"archive": "https://app.jelastic.com/xssu/cross/download/RDYYHA9jBlRaAVRLZldjQUdFDhhUG0dACkY4TnpzJlFFEhZVDwIBQmNTTEBI"
}
],
"configs": [{
"nodeType": "mysql5",
"database": {
"dump": "https://app.jelastic.com/xssu/cross/download/RDYYHFM0UFEJU1VNNwVqRRBAXhhXGBEQChNrG31xdFQRFkBYDwIBQmNTTEBI",
"patch": "UPDATE magento.admin_user SET password=CONCAT(MD5('qX${user.appPassword}'), ':qX'), email='${user.email}' WHERE username='admin';",
"name": "magento",
"user": "magento"
}
}, {
"replacements": [{
"replacement": "<![CDATA[${env.appid}]]>",
"pattern": "{{key}}"
}, {
"replacement": "<![CDATA[${nodes.mysql5.address}]]>",
"pattern": "{{db_host}}"
}, {
"replacement": "<![CDATA[${nodes.mysql5.database.user}]]>",
"pattern": "{{db_user}}"
}, {
"replacement": "<![CDATA[${nodes.mysql5.database.password}]]>",
"pattern": "{{db_pass}}"
}, {
"replacement": "<![CDATA[${nodes.mysql5.database.name}]]>",
"pattern": "{{db_name}}"
}, {
"replacement": "</config>",
"pattern": "{{db_name}}"
}
],
"path": "/var/www/webroot/ROOT/app/etc/local.xml",
"nodeType": "apache2"
}, {
"restart": true,
"replacements": [{
"replacement": "extension=gd.so",
"pattern": "; Dynamic Extensions ;"
}
],
"path": "/etc/php.ini",
"nodeType": "apache2"
}
]
},
"success": {
"text": "Admin panel URL: <a href='${env.url}index.php/admin/' target='_blank'>${env.url}index.php/admin/</a><br/>Username: admin<br/>Password: ${user.appPassword}",
"email" : "Admin panel URL: <a href='${env.url}index.php/admin/' target='_blank'>${env.url}index.php/admin/</a><br/>Username: admin<br/>Password: ${user.appPassword}"
},
"type": "php",
"homepage": "http://www.magentocommerce.com/",
"version": "1.7.0.2"
}
}
Больше примеров описано в JPS документации [7].
А теперь давайте рассмотрим внешнюю сторону использования JPS. Когда манифест приложения готов, можно приступать к его распространению среди пользователей путем предоставления виджета для установки следующих типов.
Используя инструкцию вы без проблем создадите виджет для установки вашего приложения в один клик. В качестве примера мы использовали виджет с запакованным Magento.
1. Поместите указанный JavaScript код на страницу вашего сайта, желательно сразу после открывающего тэга :
<html>
<body>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.async = true;
js.src = "//go.jelastic.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'jelastic-jssdk'));
</script>
</body>
</html>
2. Разместите данный код в том месте страницы, где должен быть расположен виджет:
<div
class="je-app"
data-manifest="link_to_json_file"
data-width="280"
data-theme="flat-blue"
data-text="Get it hosted now!"
data-tx-empty="Type your email and click the button"
data-tx-invalid-email="Invalid email, please check the spelling"
data-tx-error="An error has occurred, please try again later"
data-tx-success="Check your email"
data-key="app.{hoster_domain}">
</div>
Здесь используются следующие атрибуты:
Вы также можете использовать свой собственный виджет с любыми необходимыми настройками. Единственное требование — виджет должен запрашивать ссылку следующего типа:
http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}
Когда виджет уже помещен на сайт, любой пользователь может запустить установку запакованного приложения, нажав на кнопку Get it hosted now!, и всего в несколько шагов завершить разворачивание.
1. Введите адрес электронной почты и нажмите на указатель (стрелку) в конце поля.
2. После этого на указанный электронный адрес будет отправлена ссылка подтверждения, нажав которую вы будете перенаправлены на панель управления Jelastic.
Если указанный имейл уже зарегистрирован в Jelastic, то пользователь автоматически войдет в панель управления под своим аккаунтом.
Если такого Jelastic аккаунта не существует, пользователь будет автоматически зарегистрирован и получит письмо с паролем и адресом электронной почты.
3. В панели управления будет открыто окно Подтверждения установки приложения с общей информацией о приложении.
Введите имя окружения, которое будет создано для разворачивания приложения, и нажмите Установить.
4. После этого начнется процесс установки. Подождите, пока Создание, Разворачивание и Настройка завершатся.
В новом окне будут показаны данные учетной записи и ссылка на панель управления приложением (если это затребовано приложением, как в случае с Magento).
5. Нажмите кнопку Открыть в браузере. Установленное приложение откроется через мгновение.
Для получения административного доступа к приложению, перейдите по ссылке к его панели управления.
Как видите, приложение запущено и работает.
Таким образом, в этой статье мы показали как легко запаковать любое приложение и предоставить пользователям простой способ разворачивания в один клик, используя виджет установки. Попробуйте, ведь чем больше виджетов, тем больше пользователей. Как результат — все в выигрыше!
Автор: jelastic
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/55944
Ссылки в тексте:
[1] хостинга: https://www.reg.ru/?rlink=reflink-717
[2] JSON: http://ru.wikipedia.org/wiki/JSON
[3] JSON Formatter & Validator): http://jsonformatter.curiousconcept.com/
[4] параметрами описания приложения: http://docs.jelastic.com/application-manifest#ad
[5] документе: http://docs.jelastic.com/application-manifest#ec
[6] плейсхолдеров: http://docs.jelastic.com/packaging-standard-placeholders
[7] JPS документации: http://docs.jelastic.com/application-manifest-example
[8] Источник: http://habrahabr.ru/post/213827/
Нажмите здесь для печати.