Продемонстрирую я вам сей фокус на примере установки русской версии WordPress на OpenShift. Вы уже зарегестрированы на https://openshift.redhat.com/? Нет? Значит пора пройти регистрацию. Бесплатно такой сервис мало кто раздаёт. Пока дают, нужно брать. Только недальновидный индивидуум отказывается от бесплатного сыра... И забудем на время про мышеловку... Срочно регестрируемcя. А то вдруг парни из RedHat перестанут давать бесплатно такой шикарный кусок сыра... Будем пробовать OpenShift в деле, ведь мы же не доверяем красивым словам маркетологов?

Зарегистрировались? Ну вот, теперь пришла пора испытать даренного коня(то есть полученное местечко в облаке) на деле.

Устанавливаем необходимые для rhc(утилиты для управления облачным сервисом OpenShift) зависимости:


sudo apt-get install ruby rubygems git

Устанавливаем rhc:

sudo gem install rhc

Сразу договоримся о терминах. Я буду использовать <appname> - как имя создаваемого нами приложения, а <namespace> - пространство имен, поддомен который мы создадим для доступных нам трёх приложений на OpenShift.

Начинаем с создания <namespace> для наших приложений:

$ rhc domain create -n <namespace> -l ваша_почта -p ваш_пароль

Вместо create можно использоваить update, если нужно просто изменить что-то в уже созданном вами неймспейсе.

Если у вас нет ключей SSH, автоматически будут сгенерированны ключи


~/.ssh/libra_id_rsa (приватный ключ)
~/.ssh/libra_id_rsa.pub (публичный ключ)

Теперь переходим к созданию приложения. Что-бы узнать, какие типы приложений поддерживаются из коробки, вводим команду:


$ rhc setup

И получаем список типов поддерживаемых приложений: <code class="bash> Below is a list of the types of application you can create: Obtaining list of cartridges (please excuse the delay)... * nodejs-0.6 - rhc app create -t nodejs-0.6 -a * ruby-1.9 - rhc app create -t ruby-1.9 -a * jbossas-7 - rhc app create -t jbossas-7 -a * python-2.6 - rhc app create -t python-2.6 -a * jenkins-1.4 - rhc app create -t jenkins-1.4 -a * ruby-1.8 - rhc app create -t ruby-1.8 -a * jbosseap-6.0 - rhc app create -t jbosseap-6.0 -a * diy-0.1 - rhc app create -t diy-0.1 -a * php-5.3 - rhc app create -t php-5.3 -a * perl-5.10 - rhc app create -t perl-5.10 -a </code>

Итак, для php-приложения нам нужно ввести команду:


$ rhc app create -t php-5.3 -a < имя приложения>

В конце процедуры вы увидите в выхлопе программы что-то вроде такого текста:


Application <appname> is available at: http://<appname>-<namespace>.rhcloud.com/
  Git URL: ssh://<UID>@<appname>-<namespace>.rhcloud.com/~/git/<appname>.git/
Successfully created application: <appname>

Итак, удачно создано приложение. И вы можете теперь спокойно заливать файлы вашего приложения на сервер при помощи git. Но вначале стоит установить дополнительные картриджи для приложения.

Получаем список картриджей:


$ rhc app cartridge list

Подключаем MySQL к созданному нами приложению.

<code class="bash"
$ rhc app cartridge add -a <appname> -c mysql-5.1
</code>
</code>

Как результат, получаем примерно такой выхлоп:


RESULT:

MySQL 5.1 database added.  Please make note of these credentials:

   Root User: admin
   Root Password: < ваш пароль от БД>
   Database Name: <appname>

Connection URL: mysql://127.xx.xx.1:xxxx/

You can manage your new MySQL database by also embedding phpmyadmin-3.4.

И любимый нами phpmyadmin-3.4:


$ rhc app cartridge add -a <appname> -c phpmyadmin-3.4

Как всегда, в выхлопе мы получаем всё что нужно для доступа к установленному картриджу:


RESULT:

phpMyAdmin 3.4 added.  Please make note of these MySQL credentials again:

   Root User: admin
   Root Password: < ваш пароль от БД>

URL: https://<appname>-<namespace>.rhcloud.com/phpmyadmin/

Теперь установим cron:


$ rhc app cartridge add -a <appname> -c cron-1.4

Как всегда, не забываем глянуть что ценного нам напишут в выхлопе rhc:


RESULT:

cron-1.4 added to application <appname>

To schedule your scripts to run on a periodic basis, add the scripts to 
your application's .openshift/cron/{minutely,hourly,daily,weekly,monthly}/
directories (and commit and redeploy your application).

Example: A script .openshift/cron/hourly/crony added to your application
         will be executed once every hour.
         Similarly, a script .openshift/cron/weekly/chronograph added
         to your application will be executed once every week.

OK, пришло время готовиться к установке нашего приложения. Мы будем устанавливать WordPress для создания персонального блога.

Вначале нам нужен будет скелет будущего приложения. OpenShift используе набор хуков для деплоя, и специальную директорию, в которую должны писаться заргружаемые данные, плагины и т.п. Директорию создаёт один из хуков, который кидает в каталог с движком символическую ссылку на каталог wordpress-content. Эти скрипты созданы за нас добрыми людьми, нужно их только получить.

Создаём каталог для проекта:


$ mkdir -p ~/projects/<namespace>/<appname>/php

Теперь получаем файлы wordpress заточенного специально для работы с OpenShift.


$ cd ~/projects/<namespace>/<appname>
$ git init
$ git remote add upstream -m master git://github.com/openshift/wordpress-example.git
$ git pull -s recursive -X theirs upstream master
$ rm -rf ~/projects/<namespace>/<appname>/php
$ cd ~/projects/<namespace>
$ wget http://ru.wordpress.org/latest-ru_RU.tar.gz
$ tar xvzf latest-ru_RU.tar.gz
$ mv wordpress/* <appname>/php/
$ rm -rf wordpress
$ cp <appname>/php/wp-config-sample.php <appname>/php/wp-config.php

Пришло время настройки wordpress посредством редактирования файла wp-config.php, в котором нужно прописать переменные окружения, в которых OpenShift хранит имя БД, пароль от неё и имя хоста, на котором работает БД.

Приводим соответствующие строки к виду:


/** Имя базы данных для WordPress */
define('DB_NAME', $_ENV['OPENSHIFT_APP_NAME']);

/** Имя пользователя MySQL */
define('DB_USER', $_ENV['OPENSHIFT_DB_USERNAME']);

/** Пароль к базе данных MySQL */
define('DB_PASSWORD', $_ENV['OPENSHIFT_DB_PASSWORD']);

/** Имя сервера MySQL */
define('DB_HOST', $_ENV['OPENSHIFT_DB_HOST']);

Получаем Уникальные ключи и соли для аутентификации на странице https://api.wordpress.org/secret-key/1.1/salt/:


define('AUTH_KEY',         'ключ');
define('SECURE_AUTH_KEY',  'ключ');
define('LOGGED_IN_KEY',    'ключ');
define('NONCE_KEY',        'ключ');
define('AUTH_SALT',        'соль');
define('SECURE_AUTH_SALT', 'соль');
define('LOGGED_IN_SALT',   'соль');
define('NONCE_SALT',       'соль');

Заходим в каталог нашего приложения:


$ cd <appname>

Пришло время отослать приложение на сервер:


$ git add --all
$ git commit -a -m "Push the russian version on WordPress on server"
$ git push ssh://<UID>@<appname>-<namespace>.rhcloud.com/~/git/<appname>.git/

Цепляем alias к своему домену:


$ rhc app add-alias -a <appname>  --alias "<appname>.< доменное имя>.< доменная зона>"
Или так:

$ rhc app add-alias -a <appname>  --alias "www.< доменное имя>.< доменная зона>"

Удаляем его:


$ rhc app remove-alias -a <appname> --alias "< поддомен>.< доменное имя>.< доменная зона>"

В панели управления DNS ващего регисатратора добавьте запись cname на www.доменное имя.доменная зона направляющую на адресс <appname>-<namespace>.rhcloud.com. Где <appname> - имя приложения, а <namespace> - пространство имен, поддомен созданный вами для доступных для создания вами трёх приложений.

Одним из нескольких узких мест у OpenShift для вас может оказаться отсутствие постоянного IP у сервера, они там только динамические. Это серьёзная проблемма, ведь вы можете настроить ваше доменное имя для использования с хостингом OpenShift только при помощи CNAME-записей в панели регистратора вашего доменого имени, записи типа A для вас окажутся недоступны. То есть адреса вида http://blog.vasea-pupkin.com и http://www.vasea-pupkin.com отлично прикрепляются к вашему проекту. А адрес http://vasea-pupkin.com не будет вести к вашему PHP-приложению. Вы можете узнать IP сервера, настроить запись CNAME, но при перезагрузке или изменениии сетевых настроек IP сервера поменяется, и красивый короткий адресс без поддомена не будет вести к вашему проекту. Но есть два способа приодолеть эту проблемму. Создать запись вида: " A @ 174.129.25.170", которая строит перенаправление с адресса без поддомена на адресс с поддоменом www. Или настроить перенаправление(Forwarding) с адресса без субдомена на адресс с субдоменом в панели управления вашим доменным именем у вашего регистратора(если там есть такая услуга, а она присутсвует у большинства регистраторов.

При создании статьи использовались следующие источники: