Приложение Ruby on Rails на PostgreSQL в CentOS 7

По умолчанию Ruby on Rails использует sqlite3 в качестве системы управления базами данных (СУБД). Но иногда эта СУБД недостаточно производительна и не справляется с объёмными приложениями. Потому если приложение нуждается в масштабировании или централизации, рекомендуется использовать базу данных SQL (например, PostgreSQL или MySQL).

Данное руководство поможет настроить окружение разработки Ruby on Rails для использования PostgreSQL на сервере CentOS 7, включая установку и настройку PostgreSQL, а также создание приложения rails, использующего PostgreSQL.

Требования

Для выполнения руководства нужна среда разработки Ruby on Rails. Чтобы создать это окружение, читайте данное руководство.

Также понадобится учётная запись пользователя с доступом к sudo.

Кроме того, руководство подразумевает, что SELinux отключён.

Установка PostgreSQL

Установите систему управления базами данных PostgreSQL, если она ещё не установлена.

Добавьте репозиторий EPEL (если он не был добавлен ранее) при помощи команды:

sudo yum install epel-release

Установите СУБД PostgreSQL и её зависимые библиотеки:

sudo yum install postgresql-server postgresql-contrib postgresql-devel

Теперь PostgreSQL установлена, но нуждается в предварительной настройке.

Создайте новый кластер баз данных PostgreSQL

sudo postgresql-setup initdb

По умолчанию PostgreSQL не поддерживает авторизацию на основе пароля. Это нужно изменить.

Откройте настройки авторизации в текстовом редакторе:

sudo vi /var/lib/pgsql/data/pg_hba.conf

Найдите следующие строки в конце файла:

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

Замените ident значением md5. В результате получится:

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Сохраните и закройте файл. Теперь система PostgreSQL готова к работе.

Запустите PostgreSQL как сервис:

sudo systemctl start postgresql
sudo systemctl enable postgresql

СУБД PostgreSQL полностью готова к использованию. Теперь нужно создать пользователя для приложения Rails.

Создание пользователя PostgreSQL

Сначала смените текущего пользователя на postgres:

sudo su - postgres

Чтобы создать суперпользователя PostgreSQL, введите команду:

createuser -s pguser

Примечание: Замените условное имя pguser именем своего пользователя.

Чтобы установить пароль для новой учётной записи, запустите консоль PostgreSQL:

psql

Консоль PostgreSQL определяется командной строкой:

postgres=#

Используйте эту команду, чтобы установить пароль для пользователя БД:

\password pguser

Выберите пароль и введите его в командную строку.

Закройте консоль PostgreSQL:

\q

Создав пользователя PostgreSQL, переключитесь в учётную запись стандартного пользователя системы:

exit

Создание Rails-приложения

Создайте новое приложение Rails в домашнем каталоге. Используйте опцию -d postgresql, чтобы настроить PostgreSQL как БД приложения. Не забудьте заменить условные данные руководства своими данными:

cd ~
rails new appname -d postgresql

Перейдите в каталог приложения:

cd appname

Теперь нужно настроить взаимодействие приложения с БД PostgreSQL.

Настройка подключения к PostgreSQL

Ранее созданный пользователь PostgreSQL будет использован для создания тестовой базы данных и БД разработки (test и development соответственно). Теперь нужно настроить соответствующие параметры базы данных для взаимодействия с приложением.

Откройте конфигурационный файл БД приложения:

vi config/database.yml

В разделе default найдите строку pool: 5 и добавьте после неё следующие строки. После этого файл будет иметь такой вид:

host: localhost
username: pguser
password: pguser_password

Примечание: Замените условные данные своими данными.

Сохраните и закройте файл.

Создание баз данных приложения

Теперь создайте базы данных development и test, выполнив команду:

rake db:create

Эта команда создаст две БД на сервере PostgreSQL. К примеру, если приложение называется appname, она создаст базы данных appname_development и appname_test.

Если на данном этапе возникла ошибка, вернитесь к предыдущему разделу руководства и убедитесь, что в файле database.yml правильно указаны параметры host, username и password. Затем снова попробуйте создать базы данных.

Тестирование настройки

Попробуйте запустить приложение, чтобы убедиться, что настройка взаимодействия приложения и БД выполнена правильно.

Чтобы запустить стандартное окружение разработки, введите команду:

rails server

Это запустит Rails-приложение на порт 3000 локального хоста.

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

rails server --binding=внешний_IP_сервера

Теперь приложение доступно в браузере по ссылке:

http://внешний_IP_сервера:3000

Если на экране появилась страница Welcome aboard, значит, приложение взаимодействует с PostgreSQL должным образом.

Заключение

Теперь можно приступать к разработке приложения Rails на основе надёжной PostgreSQL, используя тестовое приложение в качестве шаблона.

Tags: , , ,

Добавить комментарий