Так уж получилось, что сейчас я стажируюсь в одной компании, где очень тяжело выбить простую программку себе на десктоп, а тем более 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: Обязательно запишите выданный пароль перед завершением, т.к. после этого я так и не нашел способ восстановить или изменить пароль :(. Логин и пароль хранятся в переменных окружения. Для их получения можно использовать терминал 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
Надеюсь, что статья окажется полезной!