Гид по технологиям

Установка Ruby on Rails с PostgreSQL на AlmaLinux 9

• 7 min read • DevOps • Обновлено 26 Nov 2025
Установка Rails и PostgreSQL на AlmaLinux 9
Установка Rails и PostgreSQL на AlmaLinux 9

Логотип и иллюстрация установки Ruby on Rails на AlmaLinux 9

Краткое содержание

  • Требования и подготовка системы
  • Установка и инициализация PostgreSQL 15
  • Установка Ruby (через DNF), Node.js и Yarn
  • Установка инструментов разработки и Rails
  • Создание роли PostgreSQL и первого проекта Rails
  • Проверка, отладка и рекомендации по безопасности

Введение

Ruby on Rails (Rails) — это open-source фреймворк для веб‑приложений на языке Ruby (лицензия MIT). Rails следует шаблону MVC (Model‑View‑Controller) и включает набор инструментов: генераторы (scaffolding), менеджеры процессов (например, Puma), пакеты Gems и многое другое.

Цель этого руководства — развернуть локальную среду разработки Rails на AlmaLinux 9 с PostgreSQL в качестве СУБД и дать практические советы для продакшн‑перехода.

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

Основные понятия (1‑строчная дефиниция)

  • Rails: фреймворк для веб‑приложений на Ruby.
  • PostgreSQL: реляционная база данных с открытым исходным кодом.
  • Gem: пакет Ruby, который устанавливается через gem.

Требования (Prerequisites)

  • Машина с AlmaLinux 9 (в примерах использован хостнейм almalinux9 и IP 192.168.10.15).
  • Ненулевой пользователь с привилегиями sudo/root.
  • Доступ в интернет для загрузки репозиториев и пакетов.

План установки (высокоуровнево)

  1. Добавить официальный репозиторий PostgreSQL и установить сервер.
  2. Инициализировать и запустить сервис PostgreSQL.
  3. Установить Ruby, Node.js, npm и Yarn.
  4. Установить Development Tools и Rails через gem.
  5. Создать роль PostgreSQL и настроить database.yml.
  6. Создать проект Rails и выполнить миграции.

Установка PostgreSQL

Добавьте официальный репозиторий PostgreSQL (пример для PostgreSQL 15):

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Добавление репозитория PostgreSQL на AlmaLinux

Установите сервер PostgreSQL и библиотеку разработки libpq (libpq-devel в RHEL‑совместимых системах):

sudo dnf install -y postgresql15-server postgresql15-contrib libpq5-devel

Установка PostgreSQL и библиотек

Инициализация кластера PostgreSQL:

sudo postgresql-15-setup initdb

Запустите и включите автозапуск сервиса:

sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15

Инициализация PostgreSQL и запуск сервиса

Проверьте статус сервиса:

sudo systemctl status postgresql-15

Проверка статуса сервиса PostgreSQL

Важно: если статус показывает проблемы (failed/disabled), проверьте журналы через sudo journalctl -u postgresql-15 --no-pager и исправьте ошибки инициализации (права на каталог данных, нехватка места и т.п.).

Установка Ruby

AlmaLinux AppStream содержит модули Ruby (3.x). Для установки Ruby 3 используйте DNF:

Проверьте доступные версии модуля Ruby:

sudo dnf module list ruby

Установите Ruby и пакеты разработки:

sudo dnf install ruby ruby-devel

Установка Ruby через dnf

Проверьте установленную версию:

ruby --version

Примечание: если вам нужно использовать несколько версий Ruby, рассмотрите rbenv или RVM (см. раздел «Альтернативные подходы»).

Установка Node.js и Yarn

Node.js и менеджер пакетов Yarn требуются Rails для компиляции JavaScript/Asset‑файлов.

Установите Node.js и npm:

sudo dnf install nodejs npm -y

Установка Node.js и npm

Установите Yarn глобально через npm:

sudo npm install -g yarn

Yarn обычно устанавливается в /usr/local/bin. Добавьте этот путь в PATH через ~/.bashrc и загрузите профиль:

echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc
source ~/.bashrc

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

which node
which yarn

node --version
yarn --version

Проверка Node.js и Yarn

Важно: на серверах с ограниченными правами используйте системные пакеты либо обеспечьте корректные права на /usr/local/bin.

Установка инструментов разработки

Установите группу Development Tools, необходимую для сборки нативных расширений гемов и компиляции:

sudo dnf group install "Development Tools" -y

После установки перейдите к установке Rails.

Установка Rails через gem

Установите Rails глобально с помощью gem (может потребоваться sudo в системной установке):

sudo gem install rails

Установка Rails через gem

Проверьте расположение и версию rails:

which rails
rails --version

Ожидаемый результат: исполняемый файл rails в /usr/local/bin/rails и версия Rails 7.x (в зависимости от текущей стабильной версии gem).

Примечание по правам: системная установка gems под sudo проще для однопользовательских машин, но в командной разработке предпочтительнее использовать rbenv/RVM + Bundler, чтобы изолировать версии.

Создание роли PostgreSQL для проекта Rails

Переключитесь на пользователя postgres и запустите psql:

sudo -u postgres psql

Внутри psql создайте роль с правом создания баз данных (пример):

CREATE ROLE hellorails WITH CREATEDB LOGIN PASSWORD 'userpassword';

Проверьте список ролей:

\du

Создание роли PostgreSQL для Rails

Выйдите из psql: нажмите Ctrl+D или выполните \q.

Важно: используйте надёжные пароли и храните учётные данные вне репозитория (например, с помощью переменных окружения или Rails credentials).

Создание первого проекта Rails

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

mkdir -p /var/www; cd /var/www

Создайте новый Rails проект с настройкой для PostgreSQL:

rails new hellorails --database=postgresql

Создание проекта Rails hellorails

Перейдите в каталог проекта и откройте конфигурацию базы данных:

cd hellorails
nano config/database.yml

Измените секции development, test и production, указав ваши учётные данные PostgreSQL:

development:
  <<: *default
  database: hellorails_development
  username: hellorails
  password: userpassword
  host: localhost
  port: 5432

test:
  <<: *default
  database: hellorails_test
  user: hellorails
  password: userpassword
  host: localhost
  port: 5432

production:
  <<: *default
  database: hellorails_production
  username: hellorails
  password: userpassword
  host: localhost
  port: 5432

Сохраните файл и выполните начальную настройку базы данных (создание схемы и миграции):

rails db:setup
rails db:migrate

Выполнение миграций базы данных Rails

Запустите сервер Rails, привязав его к IP машины и порту по умолчанию 3000:

rails server --binding=192.168.10.15

Запуск сервера Rails

Откройте в браузере: http://192.168.10.15:3000/. Если всё успешно, вы увидите стандартную стартовую страницу Rails.

Стандартная страница Rails index.html

Критерии приёмки

  • PostgreSQL сервис запущен и активен (systemctl status postgresql-15).
  • Ruby и Rails успешно установлены (ruby –version, rails –version).
  • Node.js и yarn доступны (node –version, yarn –version).
  • Базы данных hellorails_development/test созданы и миграции выполнены.
  • Сервер Rails отвечает на запросы по указанному IP и порту.

Частые ошибки и способы решения

  • Ошибка при инициализации PostgreSQL: проверьте права на каталог данных и свободное место.
  • Rails не может подключиться к БД: проверьте credentials в config/database.yml, наличие роли и пароль.
  • Ошибка сборки нативных гемов: убедитесь, что установлены Development Tools и заголовки (ruby-devel, libpq-devel).
  • Yarn не найден: убедитесь, что /usr/local/bin в PATH и что yarn установлен глобально.

Тестовая команда для проверки подключения к БД из Rails console:

rails console
ActiveRecord::Base.connection.active?

Если true, соединение установлено.

Безопасность и рекомендации для продакшна

  • Никогда не храните production‑пароли в репозитории. Используйте Rails credentials, ENV или Vault.
  • Настройте firewall (firewalld/iptables) — открывайте порт 3000 только для внутренней сети или используйте обратный прокси (nginx) и сокрытие портов.
  • Используйте systemd unit или сервис‑менеджер для запуска приложения (Puma) в продакшне.
  • Включите SSL/HTTPS на уровне обратного прокси.
  • Регулярно обновляйте гемы и систему безопасности.

Альтернативные подходы

  • Использование rbenv или RVM — для управления несколькими версиями Ruby и изоляции окружений.
  • Docker — собрать контейнеры для Rails, PostgreSQL и фронтенда; удобно для CI/CD и воспроизводимости.
  • Использование модулей AppStream для PostgreSQL — проще, но версии могут отличаться от официального репозитория.

Когда это не подходит: если вы разворачиваете высоконагруженное production‑окружение, рассмотрите отдельный сервер/кластер PostgreSQL и использование managed‑DB (Cloud SQL/RDS) для отказоустойчивости и бэкапов.

Методология быстрого старта (mini‑playbook)

  1. Подготовка ОС: обновление пакетов sudo dnf update -y.
  2. Установка PostgreSQL и инициализация.
  3. Установка Ruby, node, yarn и Development Tools.
  4. Установка Rails + создание проекта.
  5. Создание роли и настройка database.yml.
  6. Выполнение rails db:setup и запуск сервера.
  7. Быстрая проверка через браузер/console.

Роли и чеклисты

Разработчик:

  • Проверил версии ruby/rails/node.
  • Установил и запустил проект локально.
  • Настроил .gitignore и сохраняет credentials в безопасном месте.

Системный администратор:

  • Настроил PostgreSQL с бэкапами.
  • Настроил firewall и SSL через nginx.
  • Запустил Rails под systemd/Puma и настроил мониторинг.

DBA:

  • Проверил настройки производительности PostgreSQL (shared_buffers, work_mem).
  • Настроил регулярные бэкапы и ротацию WAL.

Отладочный план (Incident runbook)

  1. Приложение не запускается — проверить логи journalctl -u puma.service или лог Rails в log/production.log.
  2. БД недоступна — проверить статус sudo systemctl status postgresql-15 и логи journalctl -u postgresql-15.
  3. Ошибки миграций — выполнить rails db:rollback к последней стабильной миграции и просмотреть stack trace.
  4. Откат к предыдущей версии — вернуть gemfile.lock/образы Docker и выполнить миграции отката.

Набор тестов/Критерии приёмки

  • rails server запускается без исключений.
  • rails db:setup создает базы данных и выполняет миграции без ошибок.
  • Проверка UI: стартовая страница доступна по указанному IP.
  • Консоль Rails может подключиться к БД и выполнять простые запросы.

Маленькая галерея крайних случаев (Edge cases)

  • SELinux в Enforcing может блокировать доступ — проверьте audit.log и добавьте соответствующие правила, либо временно переключите в permissive для отладки.
  • На системах с ограниченным диском initdb может завершиться с ошибкой — убедитесь в наличии свободного места.
  • Конфликты версий gem — используйте Bundler для фиксации версий и bundle install.

Короткий глоссарий (1‑строчная)

  • gem: пакет библиотеки Ruby.
  • bundle: менеджер зависимостей Ruby (Bundler).
  • rake: вспомогательный инструмент задач для Ruby/Rails.

Ресурсы и дальнейшие шаги

  • Ознакомьтесь с Rails Guides для изучения MVC и scaffolding.
  • Настройте reverse proxy (nginx) и систему управления процессом (systemd/Capistrano) для продакшна.
  • Рассмотрите использование Docker Compose для локальной изоляции окружений.

Заключение

Поздравляем — вы развернули рабочее окружение Ruby on Rails с PostgreSQL на AlmaLinux 9. Теперь можно развивать приложение, добавлять модели, контроллеры и представления, использовать генераторы Rails и погружаться в архитектуру MVC.

Важно: для продакшн‑развертывания дополнительно настройте безопасность, бэкапы и мониторинг.

Краткое резюме:

  • Установлен PostgreSQL 15 и выполнена инициализация.
  • Установлены Ruby, Node.js, npm, yarn и Development Tools.
  • Установлен Rails, создан проект hellorails и настроен database.yml.
  • Проведены миграции и успешно запущен сервер Rails.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро