Статьи

Разверните ваши Rails в OpenShift

Снимок экрана 2015-09-13 10.24.03

OpenShift — это платформа Red Hat «Платформа как услуга» (PaaS), которая позволяет разработчикам быстро разрабатывать, размещать и масштабировать приложения в облачной среде. С OpenShift у вас есть выбор предложений, включая онлайн, локальные и открытые варианты проекта.

С помощью Git разработчики могут развертывать веб-приложения на разных языках на платформе. OpenShift делает развертывание беспроблемным, и это также бесплатное программное обеспечение с открытым исходным кодом.

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

Настройка OpenShift

Создайте аккаунт бесплатно. Бесплатная учетная запись дает вам 3 небольших механизма с емкостью хранения 1 ГБ за механизм. OpenShift Gears — это защищенные контейнеры, в которых приложения работают в узлах OpenShift. Узлы являются экземплярами Red Hat Enterprise Linux , который является основой OpenShift. Другими словами, ваше приложение находится на узлах и работает в защищенных контейнерах внутри узлов, называемых Gears .

Существуют и другие варианты ценообразования. Если вам нужно что-то другое, вы можете сравнить планы, чтобы узнать больше.

Установить RHC

Шаг первый — установить гем rhc, который содержит инструменты командной строки OpenShift:

gem install rhc 

Это установит gem rhc и его зависимости. Как и в git, rhc имеет глобальную конфигурацию, которая может быть дополнена:

 rhc setup 

(Предполагается, что вы устанавливаете rhc в первый раз, и я уверен, что вы это делаете.)

Вы получите подсказку с просьбой указать свой собственный сервер Openshift. Для этого урока мы будем использовать сервер для Openshift онлайн: openshift.redhat.com. Просто нажмите Enter, чтобы принять значение по умолчанию.

Затем введите учетные данные для входа в OpenShift, которые вы использовали при регистрации.

 OpenShift can create and store a token on disk which allows to you to access the server without using your password. The key is stored in your home directory and should be kept secret. You can delete the key at any time by running 'rhc logout'. Generate a token now? (yes|no) 

Если вы введете yes , токен будет создан и сохранен на диске. Этот токен позволяет получить доступ к серверу без использования вашего пароля.

Наконец, введите yes чтобы загрузить свой открытый SSH-ключ на сервер OpenShift, чтобы разрешить SSH-доступ на основе ключей.

NameSpace

Последний шаг к настройке заключается в создании домена. В Openshift приложения группируются в домены. Чтобы создать приложение, вы должны сначала создать домен. Каждый домен имеет уникальное имя, называемое пространством имен.

Пространство имен OpenShift Online является частью URL-адреса приложения и является уникальным для вашей учетной записи. Синтаксис для URL-адреса application–namespace.example.com : application–namespace.example.com . Каждое имя пользователя поддерживает одно пространство имен, но вы можете создать несколько приложений в этом пространстве имен. Если вам нужно несколько пространств имен, вам нужно создать несколько учетных записей, используя разные имена пользователей. Обратите внимание, что вы должны создать пространство имен, прежде чем вы сможете создать приложение.

OpenShift Online использует черный список для ограничения доступных вам пространств имен. Черный список поддерживается на сервере. Сообщение предупреждает вас о том, что вы выбрали имя из черного списка, и просит вас выбрать другое пространство имен, если вы пытаетесь создать или изменить пространство имен, используя имя из черного списка. Пространства имен могут содержать не более 16 буквенно-цифровых символов и могут не содержать пробелов или символов.

Введите уникальное имя после приглашения, и все готово. Вот и все, rhc теперь настроен.

Создать приложение Rails

Нам нужно что-то развернуть. Давайте создадим небольшое приложение Rails для игры на OpenShift. Я полагаю, что у вас есть установленный камень rails , если нет, то gem install rails поможет вам.

Создайте приложение Rails:

 $ rails new tent $ rails generate controller pages new 

Это создает PagesController с new методом и представлением. Отредактируйте новую страницу:

 ###app/views/new.html.erb <h1>Welcome to Tent</h1> <p>This is a test page</p> 

Измените корневой маршрут на:

 ###config/routes.rb Rails.application.routes.draw do root 'pages#new' end 

Мы хотим использовать Puma в качестве веб-сервера и PostgreSQL для базы данных. Puma является одним из веб-серверов, поддерживаемых OpenShift. Вы можете использовать другие веб-серверы, такие как Unicorn, Thin или Passenger.

Теперь перейдите к Gemfile и добавьте следующее:

 ###Gemfile group :production do gem 'pg' gem 'puma', '2.11.1' end 

После этого запустите bundle install .

OpenShifting the Rails App

На данный момент мы хотим создать новый пульт для нашего приложения. Вам нужно запустить эту команду из каталога над приложением Rails (~ / parent-directory / rails-app). Это предотвращает создание нового каталога в вашем приложении:

 rhc app-create tent ruby-2.0 postgresql-9.2 

Примечание: «палатка» - это название приложения.

Отредактируйте производственную конфигурацию в database.yml, как показано ниже:

 ###config/database.yml production: adapter: postgresql encoding: unicode pool: 5 database: host: port: username: password: 

Подготовка к развертыванию

Теперь давайте инициализируем наш локальный репозиторий:

 cd tent git init 

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

 rhc show-app tent 

tentapp

Получите URL-адрес git и замените его GIT REMOTE URL в следующей команде:

 git remote add openshift GIT REMOTE URL 

Давайте объединить пульт:

 git pull openshift master 

Вы должны получить конфликт в config.ru , мы должны убедиться, что он содержит контент по умолчанию. Откройте ваш config.ru и вставьте следующее:

 #config.ru #This file is used by Rack-based servers to start the application. require ::File.expand_path('../config/environment', __FILE__) run Rails.application 

Затем внесите изменения:

 git add . git commit -m "fixed conflict in config.ru" 

Я создал каталог .openshift в качестве примера, который вы можете найти здесь . Распакуйте его и переопределите каталог .openshift в вашем приложении. Структура этого каталога выглядит следующим образом:

OpenShift-каталог

Каталог .openshift , расположенный в домашнем каталоге вашего приложения, является скрытым каталогом, в котором пользователь может создавать хуки действий, устанавливать маркеры и создавать задания cron. Хуки действий - это скрипты, которые выполняются напрямую и могут быть написаны на Python, PHP, Ruby, bash и т. Д.

В приведенном выше репозитории также есть папка конфигурации с файлом puma.rb Этот файл настраивает Puma и имеет следующий контент:

 ###config/puma.rb workers Integer(ENV['WEB CONCURRENCY'] || 2) threads count = Integer(ENV['MAX_THREADS'] || 5) threads threads_count, threads_count preload_app! rackup DefaultRackup environment ENV['RACK_ENV'] || 'development' 

Скопируйте этот файл в локальный каталог конфигурации .

Разверните приложение

Нажмите приложение на удаленном сервере:

 git push openshift master 

Примечание. Если при нажатии выдается ошибка, повторите запрос на получение и нажмите еще раз.

Теперь ваше приложение онлайн. Просто перейдите по URL-адресу приложения в своем браузере по адресу http://app-nerdslab.rhcloud.com. Для моего приложения «палатка» это:

http://tent-nerdslab.rhcloud.com

Миграция базы данных

Чтобы запустить миграцию базы данных, нам нужно подключиться к нашему серверу по ssh:

 rhc ssh tent cd app-root/repo bundle exec rake db:setup RAILS_ENV=production 

Если у вас возникнут какие-либо проблемы, вы всегда можете зайти на сервер по ssh, чтобы исправить это с помощью этих же команд. Помните, что палатка в приведенной выше команде должна быть заменена именем вашего приложения.

Проверка журналов

Если вы когда-нибудь столкнетесь с ошибками, вы захотите получить доступ к журналам приложений. Чтобы проверить журналы:

 rhc ssh tent cd $OPENSHIFT_LOG_DIR ls vim ruby.log #or replace with postgresql.log 

Изменение веб-сервера

По умолчанию рубиновый картридж OpenShift поддерживает только Passenger, работающий на Apache. Но картридж Advanced Ruby позволяет использовать другие популярные серверы, такие как Puma, Unicorn, Thin, Rainbows и Passenger. Чтобы изменить его, мы будем использовать функцию rhc которая позволяет нам изменять переменные окружения. Имя выбранного вами веб-сервера находится в переменной среды OPENSHIFT_RUBY_SERVER .

Чтобы выбрать Puma:

 rhc env set OPENSHIFT_RUBY_SERVER=puma -a tent 

Для вступления в силу необходимо перезапустить приложение:

 rhc app restart tent 

Вы можете проверить, какой сервер работает, с помощью этой команды:

 rhc ssh tent '~/advanced-ruby/bin/control server' 

Если вы используете Gemfile, убедитесь, что вы добавили соответствующий гем выбранного веб-сервера. В этом случае это выглядит так:

 ###Gemfile group :production do gem 'puma', '2.11.1' end 

Вывод

Есть много вариантов для размещения приложения Rails помимо OpenShift. В SitePoint есть сообщение о Шелли Клауд Джесси Херриком . Вот еще один пост о развертывании приложения Rails в Amazon Web Services (AWS). Конечно, всегда есть Heroku . Теперь я могу рекомендовать OpenShift в качестве хостинг-провайдера для удобного развертывания.