Установка Ruby on Rails на Ubuntu 18.04 LTS с PostgreSQL
Кратко: пошаговое руководство по установке Ruby (через RVM), Node.js, RubyGems, Rails 5.2 и PostgreSQL на Ubuntu 18.04 LTS. Показываю создание первого приложения myapp с базой PostgreSQL, генерацию простого CRUD и советы по безопасности, отладке и миграции.
Обзор и цель
Это подробное руководство покажет, как установить и настроить Ruby on Rails 5.2 на Ubuntu 18.04 LTS с использованием RVM и PostgreSQL. Подойдёт для разработчиков и системных администраторов, которые хотят развернуть среду разработки Rails локально или на сервере.
Важно: команды приведены для Ubuntu 18.04 и предполагают наличие прав root или sudo.
Кому это нужно
- Разработчикам, начинающим с Rails на Linux.
- Инженерам, развертывающим среду разработки/тестирования.
- Тем, кто мигрирует проекты на PostgreSQL на Ubuntu.
Основные шаги
- Установить RVM (Ruby Version Manager)
- Установить Ruby через RVM
- Установить Node.js как JavaScript-движок
- Настроить RubyGems
- Установить Rails 5.2
- Установить и настроить PostgreSQL
- Создать и запустить первое приложение Rails с PostgreSQL
Предварительные требования
- Ubuntu 18.04 LTS
- Доступ root или sudo
- Подключение к Интернету для загрузки пакетов
Шаг 1 — Установка RVM (Ruby Version Manager)
RVM — консольный инструмент для управления версиями Ruby. Позволяет устанавливать и переключать несколько версий Ruby в одной системе.
Добавим ключ GPG и установим RVM через официальный скрипт-инсталлятор.
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable --rubyПосле установки загрузим скрипт RVM в текущую сессию:
source /usr/local/rvm/scripts/rvm
Теперь можно проверить версию RVM:
rvm versionСовет: запуск команд установки лучше делать под обычным пользователем с использованием sudo, добавляя пользователя в группу rvm при необходимости.
Шаг 2 — Установка и выбор версии Ruby
При установленном RVM можно управлять версиями Ruby. В момент написания руководства актуальной была Ruby 2.5.1 — она устанавливается автоматически, если в системе не было Ruby.
Обновим RVM и предоставим root доступ к группе rvm:
rvm get stable --autolibs=enable
usermod -a -G rvm rootПосмотреть доступные версии Ruby:
rvm list knownУстановить конкретную версию (пример для 2.5.1):
rvm install ruby-2.5.1
rvm --default use ruby-2.5.1
ruby -v
Краткая проверка: ruby -v должен вернуть строку с версией 2.5.1.
Важное замечание
Если установка занимает много времени, проверьте наличие build-утилит (gcc, make) и зависимости для компиляции Ruby.
Шаг 3 — Установка Node.js
Rails использует JavaScript-движок для компиляции asset pipeline. На Linux удобно использовать Node.js.
Добавим репозиторий NodeSource и установим Node.js 10.x:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
sudo apt install -y gcc g++ makeПроверьте node -v и npm -v после установки.
Шаг 4 — Настройка RubyGems
RubyGems — менеджер пакетов Ruby. Он устанавливается вместе с Ruby. Обновим его и отключим установку документации по умолчанию.
gem update --system
gem -vЧтобы отключить установку документации при каждой установке gem-пакета, создайте файл конфигурации:
echo 'gem: --no-document' >> ~/.gemrcЗаметка
Отключение документации ускоряет установку пакетов и экономит место на диске.
Шаг 5 — Установка Ruby on Rails
Установим Rails 5.2.0 через gem:
gem install rails -v 5.2.0
rails -v
Если rails -v показывает 5.2.0 — установка успешна.
Шаг 6 — Установка и настройка PostgreSQL
По умолчанию Rails использует SQLite, но PostgreSQL часто предпочтительнее для продакшен-сред и более сложных проектов.
Установим PostgreSQL и необходимые библиотеки для сборки pg-gem:
sudo apt install -y postgresql postgresql-contrib libpq-dev
systemctl start postgresql
systemctl enable postgresqlСоздадим пользователя и роль для Rails-приложения.
su - postgres
psql
\password postgres
create role rails_dev with createdb login password 'aqwe123';
\du
Совет по безопасности
Используйте безопасные пароли (длинные фразы/passphrase) и по возможности создавайте отдельного пользователя для каждого приложения с минимально необходимыми правами.
Шаг 7 — Создание первого приложения Rails с PostgreSQL
Создадим новое приложение myapp с указанием PostgreSQL в качестве базы данных:
rails new myapp -d postgresql
cd myapp/
vim config/database.ymlВ файле config/database.yml укажите настройки для development и test. Пример:
development:
adapter: postgresql
encoding: unicode
database: myapp_development
pool: 5
username: rails_dev
password: aqwe123
host: localhost
port: 5432
test:
adapter: postgresql
encoding: unicode
database: myapp_test
pool: 5
username: rails_dev
password: aqwe123
host: localhost
port: 5432Примечание: в исходном примере был указан порт 5423 для development — если ваш Postgres использует нестандартный порт, укажите его; стандартный — 5432.
Создадим базу и применим миграции:
rails db:setup
rails db:migrateЗапустим встроенный сервер Puma на конкретном IP и порту (пример):
rails s -b 192.168.1.10 -p 8080Откройте в браузере: http://192.168.1.10:8080/

Генерируем scaffold для модели Post (CRUD):
rails g scaffold Post title:string body:text
rake db:migrate
rails s -b 192.168.1.10 -p 8080Откройте: http://192.168.1.10:8080/posts/

Поздравляем — у вас работает Rails + PostgreSQL на Ubuntu 18.04.
Отладка и распространённые ошибки
- Проблемы со сборкой Ruby: проверьте установку build-essential (gcc, make) и libssl-dev, libreadline-dev, zlib1g-dev.
- Ошибка при установке gem pg: убедитесь, что libpq-dev установлен и PostgreSQL доступен.
- rvm: «command not found» — выполните source /usr/local/rvm/scripts/rvm или откройте новую сессию.
- Порт уже занят — проверьте, что 8080 свободен или используйте другой порт.
Альтернативные подходы
- Rbenv вместо RVM — более простой, минималистичный менеджер версий Ruby.
- Использовать Docker контейнеры: позволяет изолировать окружение и легко воспроизводить на CI/CI.
- Использовать system Ruby (apt) — быстрее в установке, но обычно старее и менее гибко.
Ментальные модели и рекомендации
- Dev vs Prod: в разработке можно запускать сервер как обычный процесс, в продакшене — через systemd / Docker / докер-контейнеры и reverse proxy (Nginx).
- Один проект — одна роль БД: давать приложению свою роль в Postgres с минимальными правами.
- Версионирование: фиксируйте версии Ruby и Rails в README/поведенческих файлах проекта.
Критерии приёмки
- rails -v выводит 5.2.0
- ruby -v выводит установленную версию (напр. 2.5.1)
- Сервер запускается: rails s успешно стартует и отвечает на запросы
- Миграции проходят без ошибок: rails db:migrate
- CRUD страницы доступны по /posts и работают корректно
Роли и чек-лист при развёртывании
Разработчик
- Проверил локальную установку Ruby, Rails и PostgreSQL
- Создал конфигурации database.yml для dev/test
- Убедился, что миграции применяются
Системный администратор
- Установил и настроил RVM или rbenv для нужных пользователей
- Настроил системный сервис (systemd) для Puma или использовал Docker
- Настроил бэкапы PostgreSQL и мониторинг
DevOps / Release engineer
- Подготовил CI для автоматических миграций и тестов
- Настроил reverse proxy (Nginx) и SSL
- Обеспечил управление секретами и окружением (ENV vars)
Безопасность и рекомендации
- Никогда не храните пароли в репозитории; используйте переменные окружения или менеджер секретов.
- Ограничьте сеть PostgreSQL (pg_hba.conf) по IP и используйте шифрование при доступе извне.
- Для продакшена используйте надежные пароли и отдельные роли с минимальными правами.
Миграция и совместимость
- При миграции с SQLite на PostgreSQL убедитесь, что типы колонок корректны и пересмотрите SQL-запросы, завязанные на SQLite-специфику.
- Проверьте гемы, которые используют нативные расширения — возможно потребуется libpq-dev и компиляция.
Мини-методология развёртывания (playbook)
- Подготовить сервер (обновление пакетов, установка build-essential).
- Установить RVM/rbenv и требуемую версию Ruby.
- Установить Node.js, Yarn (если нужен), и ruby-gems.
- Установить PostgreSQL и создать роль/базу.
- Склонировать проект, настроить database.yml (переменные окружения).
- Выполнить bundle install, rails db:setup, rails db:migrate.
- Настроить systemd unit для Puma / Docker контейнер.
- Настроить Nginx как обратный прокси и SSL.
Тесты и критерии приёмки
- Unit/Model: тесты на валидации модели Post
- Integration: создание, редактирование, удаление записей через веб-интерфейс
- DB: проверки, что миграции выполняются и схема соответствует ожиданиям
Шаблон проверки установки (Acceptance checklist)
- rvm version — возвращает версию
- ruby -v — корректная версия
- rails -v — 5.2.0
- node -v — установлен
- psql — соединение с локальным сервером
- rails db:migrate — без ошибок
- /posts — CRUD работает
Короткий глоссарий
- RVM — менеджер версий Ruby
- Rails — MVC-фреймворк для Ruby
- Puma — встроенный сервер приложений для Rails
- PostgreSQL — реляционная СУБД
Когда этот процесс может не подойти
- На сервере с ограниченными правами (без возможности установить RVM) — используйте system Ruby или контейнеры Docker.
- Для быстрого CI — предпочтительнее контейнерный образ, чтобы избежать шагов установки в каждом рантайме.
Заключение
Вы установили рабочее окружение Ruby on Rails 5.2 на базе Ubuntu 18.04 с PostgreSQL, настроили пользователя базы данных, создали проект и сгенерировали CRUD. Дальше можно переносить приложение в контейнер/продакшен и добавить CI/CD, бэкапы и мониторинг.
Сводка
- RVM упрощает управление версиями Ruby.
- Node.js нужен для asset pipeline.
- PostgreSQL рекомендуется для продакшен-проектов.

Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента