Приложение Ruby on Rails на PostgreSQL в CentOS 7
Centos, Ruby | Комментировать запись
По умолчанию 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: CentOS 7, EPEL, PostgreSQL, Ruby on Rails