Так уж получилось, что сейчас я стажируюсь в одной компании, где очень тяжело выбить простую программку себе на десктоп, а тем более IDE, порой это даже превращается в целые недельные квесты. Но в то же время, в свободное от работы время, я очень люблю экспериментировать. Почитав статью про онлайн IDE и имея аккаунт в OpenShift решил все таки попробовать создать и развернуть Yii приложение в облаках.
Сразу оговорюсь, что статья для начинающих. Кому интересно заходите!
Связываем Cloud9 IDE и OpenShift.
В качестве IDE я решил остановиться на Cloud9, дизайн и функциональность меня устраивает. Плюс то, что можно запускать приложение прямо в IDE, минус — не поддерживается хостинг баз данных, поэтому попробуем организовать доступ к базе данных, которую мы создадим в OpenShift.
Да и еще, мне улыбнулся Cloud9 из-за присутствии терминала (Alt+T), пускай хоть и ограниченного.
![](https://habrastorage.org/r/w780q1/storage2/603/2b5/b8a/6032b5b8a8300d18b7bcbe4e23dd44ce.jpg)
Шаг 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.
![](https://habrastorage.org/r/w780q1/storage2/c4e/828/b9a/c4e828b9aa1286d628257ba0a46c6ba7.jpg)
Копируем его и вставляем данный ключ в OpenShift, для этого в Your Account есть Public Keys
![](https://habrastorage.org/r/w780q1/storage2/df9/e85/ef5/df9e85ef5e552d117894f540d117c9c7.jpg)
Шаг 2. Создаем рабочую среду в Cloud9 и добавляем приложение в OpenShift
Здесь все просто, главное — при создании приложения в Cloud9 выбрать git версию рабочей среды. Дальше git будет нашим верным помощником.
![](https://habrastorage.org/r/w780q1/storage2/355/69c/d56/35569cd56b616039963db7e84676b316.jpg)
В OpenShift легким движением мыши создаем приложение с PHP 5.3.
![](https://habrastorage.org/r/w780q1/storage2/f69/60e/d35/f6960ed35a5e6f3f3e2fcb62c5158bfa.jpg)
Шаг 3. Добавляем git репозиторий приложения из OpenShift в рабочую среду Cloud9
После создания приложения в OpenShift можно увидеть его git репозиторий.
![](https://habrastorage.org/r/w780q1/storage2/597/6d2/f25/5976d2f25d7f99a118b6484df03cb0d3.jpg)
Для линковки данного репозитория к рабочей среде в Cloud9 используем следующие команды:
Шаг 4. Подгружаем Yii в рабочей среде Cloud9 и создаем каркас приложения yii
Для загрузки yii фреймоврка в приложение используем его git репозиторий, добавив его как подмодуль:
В репозитории подгрузим нужный нам релиз:
Теперь создадим каркас приложения yii. Для этого обычно используется скрипт webapp, но запустить его просто как shell не получится. Вместо этого будем использовать php версию скрипта, и да, нам понадобиться глобальный путь до нашей папки.
Выполним следующую команду и получим глобальный путь:
Имеем примерно следующее:
![](https://habrastorage.org/r/w780q1/storage2/ddd/165/372/ddd165372c6bbdf1a01eba57dc8181c9.jpg)
Теперь выполним скрипт с этим путем для создания каркаса приложения:
Добавим все полученное:
Пробный запуск php/index.php из Cloud9 покажет нам предупреждение:
date(): It is not safe to rely on the system's timezone settings.
Решается это добавлением в php/protected/config/main.php следующего:
И не забываем commit:
Хочу отметить, что проблема существует только в Cloud9, в Openshift приложение запускается без каких-либо предупреждений.
![](https://habrastorage.org/r/w780q1/storage2/c5a/e3e/d74/c5ae3ed746730fe50a2ce53cf403e6f0.jpg)
Шаг 5. Создаем базу данных в OpenShift и настраиваем соединение
Конечно, можно обойтись базой данных sqlite, но ради собственного интереса настроим MySQL, добавим картридж на странице приложения.
![](https://habrastorage.org/r/w780q1/storage2/526/30d/c4c/52630dc4c9f67c1c8a147ff201d11b6f.jpg)
UPD1:Обязательно запишите выданный пароль перед завершением, т.к. после этого я так и не нашел способ восстановить или изменить пароль :(. Как подсказывает Urchr в комментариях, логин и пароль хранятся в переменных окружения. Для их получения можно использовать терминал Cloud9 и удаленно подключиться к приложению через SSH. Логин используется стандартный — admin, а пароль берется из $OPENSHIFT_MYSQL_DB_PASSWORD.
UPD2: Адрес и порт базы данныхя смог узнать, только поставив картридж phpMyAdmin можно также получить через консоль в переменных окружения $OPENSHIFT_MYSQL_DB_HOST и $OPENSHIFT_MYSQL_DB_PORT.
Для административных целей также поставим картридж с phpMyAdmin.
![](https://habrastorage.org/r/w780q1/storage2/3d8/4b8/bec/3d84b8bece71f09bc74bb98eedc88a15.jpg)
В том же 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
Надеюсь, что статья окажется полезной!
Сразу оговорюсь, что статья для начинающих. Кому интересно заходите!
Связываем Cloud9 IDE и OpenShift.
В качестве IDE я решил остановиться на Cloud9, дизайн и функциональность меня устраивает. Плюс то, что можно запускать приложение прямо в IDE, минус — не поддерживается хостинг баз данных, поэтому попробуем организовать доступ к базе данных, которую мы создадим в OpenShift.
Да и еще, мне улыбнулся Cloud9 из-за присутствии терминала (Alt+T), пускай хоть и ограниченного.
![](https://habrastorage.org/storage2/603/2b5/b8a/6032b5b8a8300d18b7bcbe4e23dd44ce.jpg)
Шаг 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.
![](https://habrastorage.org/storage2/c4e/828/b9a/c4e828b9aa1286d628257ba0a46c6ba7.jpg)
Копируем его и вставляем данный ключ в OpenShift, для этого в Your Account есть Public Keys
![](https://habrastorage.org/storage2/df9/e85/ef5/df9e85ef5e552d117894f540d117c9c7.jpg)
Шаг 2. Создаем рабочую среду в Cloud9 и добавляем приложение в OpenShift
Здесь все просто, главное — при создании приложения в Cloud9 выбрать git версию рабочей среды. Дальше git будет нашим верным помощником.
![](https://habrastorage.org/storage2/355/69c/d56/35569cd56b616039963db7e84676b316.jpg)
В OpenShift легким движением мыши создаем приложение с PHP 5.3.
![](https://habrastorage.org/storage2/f69/60e/d35/f6960ed35a5e6f3f3e2fcb62c5158bfa.jpg)
Шаг 3. Добавляем git репозиторий приложения из OpenShift в рабочую среду Cloud9
После создания приложения в OpenShift можно увидеть его git репозиторий.
![](https://habrastorage.org/storage2/597/6d2/f25/5976d2f25d7f99a118b6484df03cb0d3.jpg)
Для линковки данного репозитория к рабочей среде в 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
Имеем примерно следующее:
![](https://habrastorage.org/storage2/ddd/165/372/ddd165372c6bbdf1a01eba57dc8181c9.jpg)
Теперь выполним скрипт с этим путем для создания каркаса приложения:
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 приложение запускается без каких-либо предупреждений.
![](https://habrastorage.org/storage2/c5a/e3e/d74/c5ae3ed746730fe50a2ce53cf403e6f0.jpg)
Шаг 5. Создаем базу данных в OpenShift и настраиваем соединение
Конечно, можно обойтись базой данных sqlite, но ради собственного интереса настроим MySQL, добавим картридж на странице приложения.
![](https://habrastorage.org/storage2/526/30d/c4c/52630dc4c9f67c1c8a147ff201d11b6f.jpg)
UPD1:
UPD2: Адрес и порт базы данных
Для административных целей также поставим картридж с phpMyAdmin.
![](https://habrastorage.org/storage2/3d8/4b8/bec/3d84b8bece71f09bc74bb98eedc88a15.jpg)
В том же 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
Надеюсь, что статья окажется полезной!