📜 ⬆️ ⬇️

JPS (Jelastic Packaging Standard) to install complex applications in one click

Jelastic strives to make the use of complex things as simple as possible, to reduce the developer's time spent on routine tasks, as well as managing processes and, as a result, to increase the efficiency of work aimed at the development itself.

In this article we will talk about our unique solution to automate the installation of applications in one click - Jelastic Packaging Standard (JPS) . Using this method, you can pack your application and provide it to end users as a ready-made product.

jps

')

General information


JPS is a standard for creating templates of fully customized applications, ready to be installed in the Jelastic cloud in one click. This solution provides an automated installation of Java, PHP or Ruby applications (as well as other languages ​​in the future).

The standard provided makes it easy to install and configure an application for end users. JPS manages the creation and automation of the deployment of the application, determines the set of parameters and cluster default settings, sets the number of required resources and limits the scaling for each container in the environment with the application.

With JPS you can offer users a widget for quick installation of the application. This will help to distribute the application among a wider audience and significantly increase sales because eliminates the complexity of installation and configuration, simplifies the choice of hosting and, thus, removes barriers in attracting customers. In addition, JPS helps IT departments reduce application support and management costs.

JPS installation


Each installation widget contains an application manifest (or a link to its source). The manifest code contains a description of the required environment topology with instructions for installing and configuring the application. JPS manifest is written in JSON format.

app manifest

To install a packaged application, the user only needs to click on the widget and enter his email address. A confirmation link will be sent to the specified email. Having passed through this link, the user will get to the Jelastic control panel to confirm the installation.

In the next few minutes Jelastic will complete the installation (the time depends on the complexity of the selected application). The Jelastic platform analyzes the manifest data, selects and configures the necessary nodes (application server, database, load balancer, etc.). As a result, the user gets a fully established and running application without the need to perform any manual actions.

initiate installation

Below you will find technical details on how to prepare the application manifest and widget, as well as the one-click installation process from the end user.

Application manifest


Before you pack the application, we recommend initially deploying it in the Jelastic cloud manually and checking all the necessary settings in order to specify them in the manifest code.

JSON format ( JSON Formatter & Validator) is used to create JPS manifest. This code should contain a set of lines required for successful installation of the application.

Body code


The code is based on the following lines:

{ "jpsVersion":"0.2" "jpsType": "install", "application": { } } 


This is an obligatory part of the application package that contains information about the JPS version and installation type (the “install” method starts the creation of a new environment required for deployment).

Application settings


The above main lines should be extended with the settings of the application you are packing. Configuration details are placed in the parameter “application”: {} .

First of all, you need to specify general information about the application, such as the name, version, type of programming language used, and so on.

Sample code for describing an OpenCMS 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" } }} 


Follow the link to learn more about the application description settings .

Environment settings


You also need to provide details about the environment that will ensure optimal performance of your application. The parameters specified in this part of the code will be used to create and configure a suitable environment during the installation of the application package.

Using the “env” parameter : {} specify all necessary values ​​according to the options described in the document . This parameter consists of the following sections:


 "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":{}, } ] 


Sample code with environment settings for the Hello World application
 "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": [] }, 


For more detailed instructions on how to set the necessary parameters, follow this link - environment parameters .

JPS maintains a list of placeholders that can be used in any section of the JPS manifest (only if it is not limited to content). The JPS controller will attempt to process all placeholders during the package installation. If this is not possible, the placeholder will be unprocessed and displayed as it is in the text (for example, $ {placeholder}).

Checking results


To verify that the manifest settings are correct, use the following link to start the installation process:

 http://{hoster_domain}?manifest={manifest_code} 

Please note that instead of manifest_code, it is recommended to use the link to the JSON file with your manifest.

Magento Manifest Example


The following example manifest for a Magento application can be used as the basis for preparing your own packaged application.

Magento manifesto
 { "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" } } 


More examples are described in the JPS documentation .

Installation Widget


And now let's look at the external side of using JPS. When the application manifest is ready, you can start distributing it to users by providing a widget for setting the following types.

widget

Using the instructions, you will easily create a widget to install your application in one click. As an example, we used a widget with a packed Magento.

1. Place the specified JavaScript code on the page of your site, preferably immediately after the opening tag
 : 

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders
:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders
 : 

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders
:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders
:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders
 : 

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders
:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders

:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders

:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders

:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders

:

<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>
:
class – “je-app”; data-manifest JSON ; data-width - ; data-theme – . : flat-blue, flat-purple, flat-orange, flat-green; 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 - , . , GeoIP ( ).
. - :

http://reg.{hoster_domain}/installapp?email={user_email}&manifest={link_to_your_manifest}


, , Get it hosted now! , .

1. () .

enter email

2. , Jelastic.

confirmation email

Jelastic, .

Jelastic , .

3. .
, , .

confirm installation

4. . , , .

installation

( , Magento).

magento credentials

5. . .
, .

magento admin panel

, .


, , . , , . - !

:
docs.jelastic.com/jps
docs.jelastic.com/application-installation-widget
docs.jelastic.com/app-packaging
docs.jelastic.com/application-manifest
docs.jelastic.com/application-manifest-example
docs.jelastic.com/packaging-standard-placeholders

Source: https://habr.com/ru/post/213827/


All Articles