Cloud9 и OpenShift. Разработка и развертывание приложений в облаках

Так уж получилось, что сейчас я стажируюсь в одной компании, где очень тяжело выбить простую программку себе на десктоп, а тем более IDE, порой это даже превращается в целые недельные квесты. Но в то же время, в свободное от работы время, я очень люблю экспериментировать. Почитав статью про онлайн IDE и имея аккаунт в OpenShift решил все таки попробовать создать и развернуть Yii приложение в облаках.

Сразу оговорюсь, что статья для начинающих. Кому интересно заходите!

Связываем Cloud9 IDE и OpenShift.

В качестве IDE я решил остановиться на Cloud9, дизайн и функциональность меня устраивает. Плюс то, что можно запускать приложение прямо в IDE, минус — не поддерживается хостинг баз данных, поэтому попробуем организовать доступ к базе данных, которую мы создадим в OpenShift.

Да и еще, мне улыбнулся Cloud9 из-за присутствии терминала (Alt+T), пускай хоть и ограниченного.



Шаг 0. Создаем аккаунты, если их у Вас еще нет.

Лично я использую бесплатные возможности.
Для Cloud9 это публичные рабочие среды по 128MB + 1 одна приватная + ограниченный терминал.
Для OpenShift это 3 small картриджа, каждый по 512MB RAM и 1GB disk. Картриджи это компоненты, которые можно добавить в приложение, такие как базы данных (MySQL, PosgreSQL и MondoDB) и инструменты администрирования (phpMyAdmin, RockMongo, Cron и т.п.).
Для маленьких экспериментов вполне достойно.

Шаг 1. Добавляем в OpenShift SSH ключ из Cloud9

SSH ключи, как известно, используются для безопасного соединения, вот хорошие статьи
В Cloud9 ключ можно найти в пункте Show SSH key в Your Account.



Копируем его и вставляем данный ключ в OpenShift, для этого в Your Account есть Public Keys



Шаг 2. Создаем рабочую среду в Cloud9 и добавляем приложение в OpenShift

Здесь все просто, главное — при создании приложения в Cloud9 выбрать git версию рабочей среды. Дальше git будет нашим верным помощником.



В OpenShift легким движением мыши создаем приложение с PHP 5.3.



Шаг 3. Добавляем git репозиторий приложения из OpenShift в рабочую среду Cloud9

После создания приложения в OpenShift можно увидеть его git репозиторий.



Для линковки данного репозитория к рабочей среде в Cloud9 используем следующие команды:

git remote add openshift -m master ssh://******.git/
git pull -s recursive -X theirs openshift master


Шаг 4. Подгружаем Yii в рабочей среде Cloud9 и создаем каркас приложения yii

Для загрузки yii фреймоврка в приложение используем его git репозиторий, добавив его как подмодуль:

git submodule add git://github.com/yiisoft/yii.git yii
git commit -m "added yii repository as submodule"


В репозитории подгрузим нужный нам релиз:

cd yii
git checkout 1.1.13
cd ..
git add yii
git commit -m "Use yii v1.1.13"


Теперь создадим каркас приложения yii. Для этого обычно используется скрипт webapp, но запустить его просто как shell не получится. Вместо этого будем использовать php версию скрипта, и да, нам понадобиться глобальный путь до нашей папки.
Выполним следующую команду и получим глобальный путь:

pwd


Имеем примерно следующее:



Теперь выполним скрипт с этим путем для создания каркаса приложения:

php yii/framework/yiic.php webapp /var/lib/stickshift/ffa13067224647beb05863058997082a/app-root/data/354172/php git


Добавим все полученное:

git add php
git commit -m "created yii skeleton app"


Пробный запуск php/index.php из Cloud9 покажет нам предупреждение:

date(): It is not safe to rely on the system's timezone settings.

Решается это добавлением в php/protected/config/main.php следующего:

<?php 
// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');
date_default_timezone_set( 'UTC' );


И не забываем commit:

git commit -a -m "set the default timezone to UTC"


Хочу отметить, что проблема существует только в Cloud9, в Openshift приложение запускается без каких-либо предупреждений.



Шаг 5. Создаем базу данных в OpenShift и настраиваем соединение

Конечно, можно обойтись базой данных sqlite, но ради собственного интереса настроим MySQL, добавим картридж на странице приложения.



UPD1: Обязательно запишите выданный пароль перед завершением, т.к. после этого я так и не нашел способ восстановить или изменить пароль :(. Как подсказывает Urchr в комментариях, логин и пароль хранятся в переменных окружения. Для их получения можно использовать терминал Cloud9 и удаленно подключиться к приложению через SSH. Логин используется стандартный — admin, а пароль берется из $OPENSHIFT_MYSQL_DB_PASSWORD.
UPD2: Адрес и порт базы данных я смог узнать, только поставив картридж phpMyAdmin можно также получить через консоль в переменных окружения $OPENSHIFT_MYSQL_DB_HOST и $OPENSHIFT_MYSQL_DB_PORT.

Для административных целей также поставим картридж с phpMyAdmin.



В том же php/protected/config/main.php настраиваем соединение с MySQL.

Вот и все!

Теперь приложение готово для дальнейших действий. Все это можно сделать используя только браузер, везде где есть интернет.

Использовались следующие источники:
1. Look Ma, No Hands! Developing for the Cloud, in the Cloud with Cloud9 IDE
2. Create Yii Project In Cloud9

Надеюсь, что статья окажется полезной!

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 7

    +3
    Зачем замазывать открытый ключ?
    0
    Настройки подключения к БД опубликованы как переменные окружения $OPENSHIFT_MYSQL_DB* В консоли всегда можно посмотреть пароль/логин, Если есть возможность, не вписывайте логин/пароль в конфиг, а ссылайтесь на переменные окружения.

    OpenShift очень нравится
      0
      Спасибо за совет. В консоль пока не лазил, т.к. на рабочий десктоп немогу ничего поставить. Сегодня вечером обязательно покавыряю консоль на домашнем ноутбуке.

      А можно по подробнее, как внутри приложения ссылаться на переменную окружения? Никогда не сталкивался с таким.
        0
        Для PHP это видимо getenv php.net/manual/en/function.getenv.php

        Cloud9 не умеет ходить по ssh?
          0
          Да, оказывается умеет, только что проверил. Почему то раньше об этом не подумал, спасибо!

    Only users with full accounts can post comments. Log in, please.