Установка Ruby on Rails с PostgreSQL на Ubuntu 20.04
TL;DR
В этом руководстве пошагово показано, как установить RVM, Ruby 2.7.1, Node.js и Yarn, Rails и PostgreSQL на Ubuntu 20.04, создать новый проект Rails с базой PostgreSQL и простое CRUD-приложение через scaffold. Следуйте шагам, проверяйте вывод команд и используйте разделы «Отладка» при ошибках.
Важно: используйте отдельного системного пользователя для разработки и храните пароли и секреты в безопасном месте (файлы .env или менеджеры секретов).

О чём эта инструкция
Это практическое руководство научит вас развертывать современную среду разработки Ruby on Rails на Ubuntu 20.04 (Focal Fossa). Мы пройдём установку RVM (Ruby Version Manager), Ruby, Node.js/Yarn (JS runtime для asset pipeline), обновим RubyGems, установим Rails, настроим PostgreSQL и создадим первый проект Rails с использованием PostgreSQL, а затем простой CRUD через scaffold.
Кому подойдёт: начинающим и инженерам, настраивающим локальную или тестовую VM/сервер для Rails-проектов.
Что потребуется (предварительные условия)
- Ubuntu 20.04 LTS (Focal Fossa)
- Минимум 2 ГБ ОЗУ, ~25 ГБ свободного места и 2 CPU (минимум для комфортной локальной разработки)
- Доступ с правами root или sudo
- Подключение к интернету для загрузки пакетов
Быстрая карта действий
- Установить RVM и Ruby 2.7.1
- Установить Node.js и Yarn
- Обновить RubyGems
- Установить Rails (через gem)
- Установить PostgreSQL и создать роль/базу
- Создать Rails-проект с опцией -d postgresql
- Настроить config/database.yml и выполнить миграции
- Создать scaffold (CRUD) и проверить работу на Puma
Шаг 0 — Перед началом: рекомендации по безопасности и окружению
- Рекомендуется работать не под root: создайте отдельного пользователя для разработки и добавьте его в группу rvm после установки.
- Храните пароли в файлах конфигурации вне контроля версий и используйте переменные окружения для секретов в production.
- На production-серверах используйте менеджеры процессов (systemd, Docker, Kubernetes) и web-серверы/прокси (nginx) перед Puma.
Шаг 1 — Установить RVM (Ruby Version Manager)
RVM управляет версиями Ruby на одном сервере и удобен для разработки. В этом шаге мы импортируем GPG-ключи, запустим официальный инсталлятор и загрузим скрипт rvm в сессию.
Импорт GPG-ключей RVM:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
7D2BAF1CF37B13E2069D6956105BD0E739499BDBУстановка RVM и Ruby по умолчанию (инсталлятор сам установит необходимые пакеты):
curl -sSL https://get.rvm.io | bash -s stable --rubyПосле окончания установки загрузите RVM в текущую сессию:
source /usr/local/rvm/scripts/rvmПроверьте, что команда rvm доступна:
rvm version
Если вы планируете запускать команды под root или другим пользователем, добавьте пользователя в группу rvm:
usermod -a -G rvm <имя_пользователя>Важно: после добавления в группу перелогиньтесь или выполните newgrp rvm, чтобы изменения вступили в силу.
Шаг 2 — Установить и настроить Ruby
В этом руководстве мы используем Ruby 2.7.1 (совместим с Rails 6.x).
Установите Ruby 2.7.1 через rvm:
rvm install ruby-2.7.1Сделайте установленную версию Ruby версией по умолчанию:
rvm --default use ruby-2.7.1Проверьте версию Ruby:
ruby --version
Отладка: если установка останавливается из-за отсутствия зависимостей, установите необходимые пакеты сборки (gcc, make, libssl-dev и т.д.). Для Ubuntu это можно сделать через apt.
Шаг 3 — Установить Node.js и Yarn (JS runtime для Rails)
Rails использует JavaScript runtime для asset pipeline и некоторых современных библиотек. В этом руководстве мы устанавливаем Node.js (через Nodesource) и Yarn (официальный репозиторий Yarn).
Установите зависимости компиляции (если их нет):
sudo apt install gcc g++ makeДобавьте репозиторий NodeSource (пример для Node 14):
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -Добавьте GPG-ключ и репозиторий Yarn:
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.listОбновите кеш пакетов и установите nodejs и yarn:
sudo apt update
sudo apt install yarn nodejsПроверьте версии:
node --version
yarn --version
Примечание: для некоторых окружений достаточно пакета nodejs из стандартного репозитория Ubuntu, но для актуальных версий лучше использовать Nodesource.
Шаг 4 — Обновить RubyGems и отключить документацию при установке gem’ов
RubyGems управляет установкой gem-пакетов.
Обновление менеджера gem:
gem update --systemПример вывода (сокращённо):
Updating rubygems-update
Fetching rubygems-update-3.1.3.gem
Successfully installed rubygems-update-3.1.3
...
RubyGems system software updatedОтключение установки документации для gem’ов (ускоряет установку):
echo "gem: --no-document" >> ~/.gemrcПроверка версии gem:
gem -vШаг 5 — Установить Rails
Установим Rails через gem. Это установит текущую стабильную версию, совместимую с вашим Ruby.
gem install railsПроверка версии Rails:
rails --versionВ примере исходного руководства было установлено Rails 6.0.3.

Шаг 6 — Установить и настроить PostgreSQL
Мы используем PostgreSQL как production-ready DB. Установим сервер и клиентские библиотеки, затем создадим роль для приложения.
sudo apt install postgresql postgresql-contrib libpq-dev -yЗапустите и включите сервис PostgreSQL:
systemctl start postgresql
systemctl enable postgresqlСоздайте роль и задайте пароль (в примере роль называется hakase_dev):
sudo -i -u postgres psql
create role hakase_dev with createdb login password 'hakasepass';
\qПроверьте список ролей в psql:
\du
Безопасность: не используйте в production простые пароли в явном виде. Применяйте менеджеры секретов и строгие права доступа.
Шаг 7 — Создать новый проект Rails с PostgreSQL
По умолчанию Rails использует SQLite. Создадим проект с явным указанием PostgreSQL.
Создание проекта:
rails new hakaseapp -d postgresqlПерейдите в каталог проекта и отредактируйте конфигурацию подключения к БД:
cd hakaseapp/
vim config/database.ymlВ секции development и test укажите:
host: localhost
port: 5432
username: hakase_dev
password: hakasepassСоздайте и прогоните миграции БД:
rails db:setup
rails db:migrate
Запустите сервер Puma на всех интерфейсах и порте 8080 (пример для демонстрации на VM):
rails s -b 0.0.0.0 -p 8080Пример URL (локальная сеть): http://10.5.5.32:8080/

Откройте браузер по адресу сервера и убедитесь, что видите стартовую страницу Rails:

Шаг 8 — Создать простой CRUD через scaffold
Scaffold генерирует модель, контроллер, миграции и базовые view.
Генерация ресурса Post с полями title и body:
rails g scaffold Post title:string body:textПримените миграции:
rake db:migrateЗапустите сервер и откройте страницу /posts:
rails s -b 0.0.0.0 -p 8080URL пример: http://10.5.5.32:8080/posts

После заполнения формы вы увидите сохранённый пост в интерфейсе.
Отладка и типичные ошибки
- “Could not locate Gemfile” — убедитесь, что вы находитесь в корне проекта и выполнили bundle install.
- Ошибки при установке Ruby — установите системные зависимости: build-essential, libssl-dev, libreadline-dev, zlib1g-dev.
- Ошибка подключения к PostgreSQL — проверьте, что service postgresql запущен, учётные данные совпадают, а в pg_hba.conf разрешены нужные методы аутентификации.
- Permission denied для сокета PostgreSQL — запуск psql под тем же пользователем, что и сервер, или используйте TCP (host и порт).
Совет: при неясных ошибках просмотрите логи Rails (log/development.log) и системный журнал (journalctl -u postgresql).
Альтернативные подходы и когда их использовать
- rbenv вместо RVM — проще и более «минималистично», если не нужен функционал rvm (gemset’ы, более гибкое управление окружениями).
- System Ruby (apt) — подходит для простых сценариев и CI, но обычно версии устаревают.
- Docker — хорош для изолированной и воспроизводимой среды; полезен для продакшена и CI/CD.
- Использовать SQLite для быстрых прототипов (локально) и PostgreSQL в staging/production.
Ментальные модели и правила принятия решений
- Для разработки: используйте RVM/rbenv и локальную БД, чтобы быстро тестировать.
- Для production: контейнеризация + управляемая СУБД (RDS/managed Postgres) и секреты в менеджере.
- Всегда разделяйте окружения (development/test/production) и храните конфигурации вне кода.
Контрольный список перед развертыванием в production
- Перенести секреты в менеджер секретов
- Настроить SSL и обратный прокси (nginx)
- Настроить systemd unit или process manager для Puma
- Настроить бэкапы PostgreSQL и мониторинг
- Включить миграции в pipeline CI/CD и тесты
Роль‑ориентированные задачи
- Разработчик:
- Настроить RVM/rbenv, установить Ruby и зависимости
- Запустить локальную БД или подключиться к dev/staging
- Написать и прогнать тесты
- Системный администратор:
- Установить PostgreSQL, настроить бэкапы и мониторинг
- Настроить reverse proxy (nginx) и SSL
- Настроить процессный менеджер для Puma
Тестовые сценарии и критерии приёмки
- Установка завершилась без ошибок и команды rvm, ruby, rails, node и yarn доступны.
- rails new создал проект, rails db:setup и rails db:migrate прошли успешно.
- Приложение отвечает по HTTP: GET / возвращает код 200 и страницу Rails.
- CRUD через /posts создает/редактирует/удаляет записи и сохраняет их в PostgreSQL.
Совместимость и миграционные заметки
- В примере используется Ruby 2.7.1 и Rails 6.x. Если планируете переход на Ruby 3.x или Rails 7, проверьте совместимость гемов (особенно native-extensions и database adapters).
- Для миграции с SQLite на PostgreSQL проверьте типы полей и кодировку (UTF-8) перед переносом данных.
Полезные команды для повседневных задач
- Список запущенных процессов Rails/Puma: ps aux | grep puma
- Перезапуск PostgreSQL: sudo systemctl restart postgresql
- Запуск консоли Rails: rails console
- Вызов rake задач: rails db:migrate, rails db:seed
Краткое руководство по безопасности и конфиденциальности
- Не храните пароли и секреты в репозитории. Используйте переменные окружения или secrets management.
- Ограничьте доступ к базе данных по сети и используйте правильные правила в pg_hba.conf.
- Обновляйте операционную систему и пакеты безопасности.
Мини-справочник (глоссарий, 1 строка)
- RVM — менеджер версий Ruby, позволяющий устанавливать и переключать Ruby.
- Gem — пакет Ruby, устанавливаемый через RubyGems.
- Rails — фреймворк на Ruby, реализующий MVC и ускоряющий разработку веб-приложений.
- Puma — сервер приложений Ruby, используемый для запуска Rails-приложений.
- Scaffold — генератор Rails, создающий модель, контроллер, представления и маршруты для CRUD.
Шаблон проверки перед выпуском (SOP)
- Собрать зависимости: bundle install, yarn install
- Прогнать тесты: rails test (или rspec)
- Прогнать миграции в staging: rails db:migrate
- Проверить функциональность приложений (smoke tests)
- Развернуть на production и мониторить логи
Краткое резюме
- Вы установили RVM, Ruby 2.7.1, Node.js и Yarn, Rails и PostgreSQL на Ubuntu 20.04.
- Создали проект Rails с PostgreSQL и простое CRUD-приложение через scaffold.
- Примеры команд, типичные ошибки и рекомендации по безопасности помогут адаптировать инструкцию под тестовую или production-среду.
Если нужно, могу подготовить Dockerfile и docker-compose.yml для быстрого развёртывания аналогичной среды в контейнерах.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента