Setup Ruby app

Установка и настройка ruby приложения в cPanel

Всем привет, в этой статье сегодня мы рассмотрим возможность установки и настройки ruby on rails приложений на рабочий (продакшен) сервер. В качестве такого сервера будем рассматривать обычный шаред сервер на базе Centos 6.7 с предустановленной панелью управления WHM/cPanel.

В последние годы разработка сайтов на ruby on rails стает довольно популярной, поэтому все больше и больше хостинг компаний, стараются внедрять и поддерживать такие технологии,  наша компания hostpro.ua не активно внедряет и максимально поддерживает такие проекты и данное направление как таковое, в будущем будет все больше и больше инструментов для развертывания (деплоя) проекта на сервер.

  1. Надежность ( предусматривает стабильность работы веб сервера, быстроту, а так же тех. поддержку 24/7)
  2. Поддержка ruby on rails
  3. Возможность работы с командной строкой (поддержка возможности использования SSH)
  4. Предустановленная возможность работы с GIT
  5. Возможность создания, остановки и перезапуска проектов через панель управления (если делаем проект для клиентов)

Если попробовать определить какие опции должны быть доступны при выборе ruby on rails хостинг для проектов, то я думаю следует выделить такие из них:

Как я уже писал ранее, в этом примере будем использовать linux сервер с панелью управления WHM/cPanel с предустановленной возможностью использования Ruby/Python селектора.

Для начала работы открываем нашу панель управления cPanel, и проматываем вниз до раздела «Программное обеспечивание и службы»

Програмное обеспечение cPanel

Для работы с ruby Вам необходимо перейти в пункт «Setup Ruby app«, где Вы видите окно «Setup new application» с такими опциями:

Ruby version — Выбор версии ruby для Вашего проекта, доступен выбор из {1,8 — 2,1}

App Directory /home/darelvc/ — Директория в которой будут установлены наши приложения.

App URI — URL для доступа к Вашему приложению.

Setup Ruby app

Вбиваем нужные Вам значения, после чего жмем кнопку «Setup«, после создания мы будем видеть, что у нас стала возможна для управления такая таблица:

Setup new application

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

  • Update — Команда для обновления настроек/модулей проекта.
  • Reset — Сброс настроек/модулей проекта.
  • Restart — Перезапуск настроек/модулей проекта.
  • Remove — Удаление проекта.

Например, через данное окно можно до устанавливать модули, в качестве gem файлов, например, для установки модуля haml

Прописываем в строку haml — система для Вас сгенерирует похожие модули и предоставит их по совпадениям в выпадающем списке, выбираем haml, после чего появиться окно с выбором подходящей версии данного модуля, выбираем — 4.0.7

Так же обязательно выбираем и добавляем сам – bundle и bundler, по желанию можно добавить все гемы для Вашего приложения, выглядеть после добавления будет так:

bundle rails cpanel

При первом запуске нашего приложения мы видим вот такое окно:

It works!

Ruby 2.1

Это говорит нам о том, что все настроено и работает корректно.

Следующим шагом будет создание базы данных для нашего проекта, для этого заходим в cPanel раздел Базы данных MySQL и создаем нужную нам базу данных и необходимого пользователя. В моем случае это база данных darelvc_db и пользователь darelvc_db, добавляем новосозданного пользователя к нашей БД и задаем все привилегии.

DB user cpanel

Теперь приступаем к выгрузке нашего сайта на наш сервер.

Для этого заходим в консоль по SSH, если у Вас нет доступа по SSH, то Вам следует написать запрос с контактного эмейл адресса на контактный ящик тех. поддержки — support@hostpro.ua

Для пользователей linux или mac OS необходимо открыть командную строку и набрать:

ssh Имя_Вашего_пользователя@IP_адрес_сервера

  • Вместо Имя_Вашего_пользователя — вводите Ваш логин доступа в cPanel
  • Вместо IP_адрес_сервера — вводите IP адрес Вашего сервера, в моем случае это — 91.239.234.98

После подключения переходим в каталог, который Вы создали через панель управление ранее, при генерации нашего проекта, в моем случае это recipe

darelvc@darelvc.ml [~/recipe]# git —version

git version 2.2.0

Генерируем и подключаем SSH access key для нашего аккаунта в github

darelvc@darelvc.ml [~/recipe]# ssh-keygen -t rsa -b 4096 -C «darelvc@gmail.com»

Generating public/private rsa key pair.

Enter file in which to save the key (/home/darelvc/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/darelvc/.ssh/id_rsa.

Your public key has been saved in /home/darelvc/.ssh/id_rsa.pub.

The key fingerprint is:

43:81:0e:c2:c3:36:a0:2d:c1:c2:c9:74:d2:be:c9:53 darelvc@gmail.com

The key’s randomart image is:

+—[ RSA 4096]—-+

cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAoRTD42UaotFSXZ/S6FVwfiYw2xPLRCecehR20/6vthXHrAddAiKdYOjUur6PZAK6ebEPyP74Gi47UzoNchWBOtA8Wmcj3QrS7tsArNrWSePtSXoQNcKem5Cx+QrTZ6XeRFbSPNUl24FvBEXKf+jwI0/2/qSRAUzVPGeB4p8id+Fk963JT8vNwwUlrcuG5jxZv04AqLj9nz8RP9qNTgaZsPmbkGyFXp0Abxe9z1uyPLWYsrQosI+SENROuTLeVx7Ilu+/7RrtZ54/yfoV0H1q/rm7WnaY3p6h4gk1nWCnQsJtqHNUutbCvChLlgWyWO0wcQ+FPnwVMYZyu6LLVA4e1k/K8ilKkP13bGONjPmznMVA1p0wtR9sArO8tYSmUS7jz8eCkTrMsZUD0xw0hWKuWhwy3TEHYIV7b99PRXeq42+EqJgsD0abLNBlNral4ltNvzhLBc/FEmidjKciww/AVG/95sJWoDifAsc1VSWXXdwHEvs8RagLKNJXFML/P6Z/9MFRAWxeEc5Vc/oaPAPRuBWr5us2BZgQe4+ylR2QxUCaD33UJcZ586vahpzsD+mNPxGYMJ5D9xEMmhrXTEIdQ3Qqkq7lGUeFgeQt+KpfS9M5fCeIueMvw8DD3IiYaKWImn4zHn+HlXaGeN+MRozRWzIGg/lebRDHvOXwS5VOCYE= darelvc@gmail.com

Данный ключ вносим в наш аккаунт на github — SetingsSSH keysadd SSH key

github

Все мы можем приступать к работе с git на нашем проекте.

В данном примере я буду устанавливать redmine на наш проект. Для этого первым делом скачиваем наш архив, выполняем такую команду в консоли:

darelvc@darelvc.ml [~/recipe]# wget http://www.redmine.org/releases/redmine-3.1 .0.tar.gz

Затем распаковываем наш архив:

darelvc@darelvc.ml [~/recipe]# tar -zxvf redmine-3.1.0.tar.gz

После распаковки создастся каталог redmine-3.1.0/, копируем все его содержимое в каталог recipe/, для этого выполняем команду:

darelvc@darelvc.ml [~/recipe]# cp -r redmine-3.1.0/* ./

Переходим в папку config/ для того что бы отредактировать наш конфигурационный файл для работы с базой данных, выполняем команду:

cp database.yml.example database.yml

Открываем и редактируем наш конфиг

production:

adapter: mysql2

database: darelvc_db

host: localhost

username: darelvc_db

password: *******

encoding: utf8

Теперь скопируем все содержимое с каталога recipe/public в каталог public_html/recipe/

darelvc@darelvc.ml [~/recipe]# cp -r public/* ../public_html/recipe/

cd ~/public_html/recipe/

cat htaccess.fcgi.example >> .htaccess

cp dispatch.fcgi.example dispatch.fcgi

После чего активируем нужную нам версию руби через нашу консоль, если Вы выбрали версию 2.1, то Вам нужно запустить такую команду:

source ~/rubyvenv/recipe/2.1/bin/activate

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

Таким же образом выполняем команду bundle install

~/rubyvenv/recipe/2.1/bin/bundle install  

  • *Не забываем, что в пути в место recipe указываем свое значение, так же может нам понадобиться еще один гем, прописываем его в наш Gemfile — gem «bigdecimal»

В процессе установки система попросила до установить 1 гем файл rdoc-data, устанавливаем его:

~/rubyvenv/recipe/2.1/bin/gem install rdoc-data

Еще раз выполняем команду bundle install.

Следующим шагом будет запуск миграции БД для нашего проекта:

RAILS_ENV=production ~/rubyvenv/recipe/2.1/bin/rake db:migrate

Загрузим наши данные в бд:

RAILS_ENV=production ~/rubyvenv/recipe/2.1/bin/rake redmine:load_default_data 

При установки нас спрашивают на каком языке должны быть импортированы данные в базу данных, выбираем ru

Проверяем, что у нас получилось, заходим по адресу:

http://darelvc.ml/recipe/

Инициализируем наш каталог для работы с git

git init .

Добавляем все файлы:

git addA

Создаем 1 коммит на рабочем сервере:

Git commit –m “deploy to production web server”

На этом все. Приятной работы.