OpenShift: PaaS — новая мода в мире Shared Hosting

    2014-09-20 19:40 | Автор: jekader | Filed under: FedoraMD

    Многие из нас пришли в мир Linux благодаря стеку LAMP, который так удобен для дешёвого хостинга. Но времена изменились и старую знакомую нам технологию тоже коснулась лихорадка по имени Cloud. Результат наывается Platform as a Service, сокращённо PaaS. Вещь это многократно более сложная, но принцип тот-же: один физический сервер (или ферму серверов) предлагается делить между клиентами, давая каждому из них ограниченную свободу действий для внедрения приложений. Со стороны пользователя всё тоже аналогично, только технологии гораздо современнее.

    На рынке PaaS присутствуют такие игроки как Heroku, Google App Engine, а в этой заметке я продемонстрирую работу с продуктом от RedHat по имени OpenShift.

    Итак, OpenShift - это PaaS решение, использующее открытые технологии для облегчения работы разработчиков. Имеется три версии:

    • Online
    • Enterprise
    • Origin

    Версия Origin - это открытый продукт, доступный для скачивания и установки любому желающему. Enterprise - это "платная" версия с поддержкой и дополнительными плюшками. Online - самая удобная для начинающих версия. По суте это публичный экземпляр версии Enterprise, поддерживаемый RedHat и открытый для регистрации. То есть не нужно ничего устанавливать и настраивать: достаточно создать учётную запись и пользоваться, причём есть и бесплатный "тарифный план". Понятно, что сделано это для привлечения новых пользователей версии Enterprise, но если посмотреть со стороны термина "Shared Hosting", то бесплатный гигабайт хранилища + php/python/perl/etc + mysql/postgres/mongo/etc это совсем неплохая халява!

    Теперь, когда стимул для изучения новой технологии получен, приступаем. Первым делом я зарегистрировался на сайте. При наличии пароля, работать можно как через web интерфейс, так и через консольную утилиту "rhc" доступную как ruby gem:
    # gem install rhc
    я создал отдельную директорию openshift и продолжил работать в ней:
    $ mkdir ~/openshift
    $ cd ~/openshift

    предлагаемая методика работы следующая: проекты создаются через rhc, а код в них заливается через git.
    Для начала подключаемся к учётной записи
    $ rhc setup -l <username>
    в этом процессе произойдёт настройка, будет также запрошен namespace. Подробнее об этом: в openshift online приложения доступны по адресу <app>-<namespace>.rhcloud.com
    Я например указал jekader в качестве namespace, поэтому в результате имею приложения вида test-jekader.rhcloud.com Можно указать и свой собственный домен, но я не прорверял.
    После настройки выдаётся рекомендация по созданию приложения.
    Run 'rhc create-app' to create your first application.

    Do-It-Yourself 0.1 rhc create-app <app name> diy-0.1
    JBoss Application Server 7 rhc create-app <app name> jbossas-7
    JBoss Data Virtualization 6 rhc create-app <app name> jboss-dv-6.0.0
    JBoss Enterprise Application Platform 6 rhc create-app <app name> jbosseap-6
    Jenkins Server rhc create-app <app name> jenkins-1
    Node.js 0.10 rhc create-app <app name> nodejs-0.10
    PHP 5.3 rhc create-app <app name> php-5.3
    PHP 5.4 rhc create-app <app name> php-5.4
    PHP 5.4 with Zend Server 6.1 rhc create-app <app name> zend-6.1
    Perl 5.10 rhc create-app <app name> perl-5.10
    Python 2.6 rhc create-app <app name> python-2.6
    Python 2.7 rhc create-app <app name> python-2.7
    Python 3.3 rhc create-app <app name> python-3.3
    Ruby 1.8 rhc create-app <app name> ruby-1.8
    Ruby 1.9 rhc create-app <app name> ruby-1.9
    Ruby 2.0 rhc create-app <app name> ruby-2.0
    Tomcat 6 (JBoss EWS 1.0) rhc create-app <app name> jbossews-1.0
    Tomcat 7 (JBoss EWS 2.0) rhc create-app <app name> jbossews-2.0
    Vert.x 2.1 rhc create-app <app name> jboss-vertx-2.1

    You are using 0 of 3 total gears
    The following gear sizes are available to you: small

    Your client tools are now configured.

    Создадим php-5.4 приложение с именем "test":
    $ rhc app create -a test php-5.4
    на выходе получаем подробные инструкции об использовании:

    Application Options
    -------------------
    Domain: jekader
    Cartridges: php-5.4
    Gear Size: default
    Scaling: no

    Creating application 'test' ... done

    Waiting for your DNS name to be available ... done

    Cloning into 'test'...
    The authenticity of host 'test-jekader.rhcloud.com (174.129.52.167)' can't be established.
    RSA key fingerprint is fe:dc:ba:09:87:65:43:21:fe:dc:ba:09:87:65:43:21.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'test-jekader.rhcloud.com,174.129.52.167' (RSA) to the list of known hosts.

    Your application 'test' is now available.

    URL: http://test-jekader.rhcloud.com/
    SSH to: 87654321fedcba0987654321@test-jekader.rhcloud.com
    Git remote: ssh://87654321fedcba0987654321@test-jekader.rhcloud.com/~/git/test.git/
    Cloned to: /home/jekader/openshift/test

    Run 'rhc show-app test' for more details about your app.

    Мало того, содержимое приложения только что было скопировано в текущую директорию:
    $ ls -l test
    total 40
    -rw-r--r-- 1 jekader jekader 39627 Sep 20 18:01 index.php

    переходим в директорию и изменяем наш файл:
    $ cd test
    $ mcedit index.php

    я задал вот такое содержимое:
    < ?php echo "test"; ?>
    теперь требуется чтоб изменения попали "в облако". Для этого используется git. Устанавливаем его при отсутствии, затем комментируем изменения и сохраняем:
    $ git commit -a -m 'test commit'
    [master af3b92e] test commit
    1 file changed, 2 insertions(+), 274 deletions(-)
    rewrite index.php (99%)

    результат загружаем на OpenShift:
    $ git push
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 298 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: Stopping PHP 5.4 cartridge (Apache+mod_php)
    remote: Waiting for stop to finish
    remote: Waiting for stop to finish
    remote: Building git ref 'master', commit af3b92e
    remote: Checking .openshift/pear.txt for PEAR dependency...
    remote: Preparing build for deployment
    remote: Deployment id is e65b2d96
    remote: Activating deployment
    remote: Starting PHP 5.4 cartridge (Apache+mod_php)
    remote: Application directory "/" selected as DocumentRoot
    remote: -------------------------
    remote: Git Post-Receive Result: success
    remote: Activation status: success
    remote: Deployment completed with status: success
    To ssh://87654321fedcba0987654321@test-jekader.rhcloud.com/~/git/test.git/
    2e0de71..af3b92e master -> master

    Ну вот и всё, можно заходить и смотреть результат:
    http://test-jekader.rhcloud.com/

    Аналогично загружаются и любые другие изменения. К контейнеру можно подключаться напрямую по SSH, а также настраивать через web интерфейс OpenShift. Возможностей на самом деле гораздо больше, но пользоваться довольно-таки удобно, особенно учитывая что основная масса разработки и так ведётся с использованием git.

    Надеюсь что эта заметка подтолкнёт кого-нибудь воспользоваться "бесплатным хостингом от RedHat", а может даже и внедрить OpenShift в своей организации для упрощения труда разработчиков. В будущих версиях обещают и поддержку Docker.

    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    Метки: , ,

    4 комментария »


    комментария 4

    1. Vasile Chelban:

      Тянет посмотреть поближе. Спасибо за ликбез!

    2. jekader:

      Вася, технология действительно приятна. Попробуй на openshift online зарегистрировать учётку и поиграться — там всего парочку команд достаточно чтобы создать приложение.

    3. Oleg:

      Жека, супер. Мне очень понравилось.

      Вопрос другой, на сколько долго будет работать Online? и какие у него ограничения, кроме пронстранства?

    4. jekader:

      Думаю ближайшие годы проживёт, а дальше видно будет. На крайняк, как уже говорил, всегда можно поднять свой собственный OpenShift и туда смигрировать.

      Условия пользования я не читал, хотя никаких особых ограничений похоже нету:
      https://www.openshift.com/legal/acceptable_use

    Leave a comment

    *