Установка Ruby on Rails с PostgreSQL на 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.
- Доступ в интернет для загрузки репозиториев и пакетов.
План установки (высокоуровнево)
- Добавить официальный репозиторий PostgreSQL и установить сервер.
- Инициализировать и запустить сервис PostgreSQL.
- Установить Ruby, Node.js, npm и Yarn.
- Установить Development Tools и Rails через gem.
- Создать роль PostgreSQL и настроить database.yml.
- Создать проект 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 и библиотеку разработки libpq (libpq-devel в RHEL‑совместимых системах):
sudo dnf install -y postgresql15-server postgresql15-contrib libpq5-devel
Инициализация кластера PostgreSQL:
sudo postgresql-15-setup initdbЗапустите и включите автозапуск сервиса:
sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15
Проверьте статус сервиса:
sudo systemctl status postgresql-15
Важно: если статус показывает проблемы (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 --versionПримечание: если вам нужно использовать несколько версий Ruby, рассмотрите rbenv или RVM (см. раздел «Альтернативные подходы»).
Установка Node.js и Yarn
Node.js и менеджер пакетов Yarn требуются Rails для компиляции JavaScript/Asset‑файлов.
Установите Node.js и npm:
sudo dnf install nodejs npm -y
Установите Yarn глобально через npm:
sudo npm install -g yarnYarn обычно устанавливается в /usr/local/bin. Добавьте этот путь в PATH через ~/.bashrc и загрузите профиль:
echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc
source ~/.bashrcПроверьте расположение и версии:
which node
which yarn
node --version
yarn --version
Важно: на серверах с ограниченными правами используйте системные пакеты либо обеспечьте корректные права на /usr/local/bin.
Установка инструментов разработки
Установите группу Development Tools, необходимую для сборки нативных расширений гемов и компиляции:
sudo dnf group install "Development Tools" -yПосле установки перейдите к установке Rails.
Установка Rails через gem
Установите Rails глобально с помощью gem (может потребоваться sudo в системной установке):
sudo gem install rails
Проверьте расположение и версию 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
Выйдите из psql: нажмите Ctrl+D или выполните \q.
Важно: используйте надёжные пароли и храните учётные данные вне репозитория (например, с помощью переменных окружения или Rails credentials).
Создание первого проекта Rails
Создайте каталог для проектов и перейдите в него:
mkdir -p /var/www; cd /var/wwwСоздайте новый Rails проект с настройкой для PostgreSQL:
rails new hellorails --database=postgresql
Перейдите в каталог проекта и откройте конфигурацию базы данных:
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, привязав его к IP машины и порту по умолчанию 3000:
rails server --binding=192.168.10.15
Откройте в браузере: http://192.168.10.15:3000/. Если всё успешно, вы увидите стандартную стартовую страницу Rails.

Критерии приёмки
- 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)
- Подготовка ОС: обновление пакетов
sudo dnf update -y. - Установка PostgreSQL и инициализация.
- Установка Ruby, node, yarn и Development Tools.
- Установка Rails + создание проекта.
- Создание роли и настройка database.yml.
- Выполнение
rails db:setupи запуск сервера. - Быстрая проверка через браузер/console.
Роли и чеклисты
Разработчик:
- Проверил версии ruby/rails/node.
- Установил и запустил проект локально.
- Настроил .gitignore и сохраняет credentials в безопасном месте.
Системный администратор:
- Настроил PostgreSQL с бэкапами.
- Настроил firewall и SSL через nginx.
- Запустил Rails под systemd/Puma и настроил мониторинг.
DBA:
- Проверил настройки производительности PostgreSQL (shared_buffers, work_mem).
- Настроил регулярные бэкапы и ротацию WAL.
Отладочный план (Incident runbook)
- Приложение не запускается — проверить логи
journalctl -u puma.serviceили лог Rails в log/production.log. - БД недоступна — проверить статус
sudo systemctl status postgresql-15и логиjournalctl -u postgresql-15. - Ошибки миграций — выполнить
rails db:rollbackк последней стабильной миграции и просмотреть stack trace. - Откат к предыдущей версии — вернуть 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента