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

Установка Ruby on Rails на Ubuntu 18.04 LTS с PostgreSQL

• 7 min read • Руководство • Обновлено 26 Nov 2025
Ruby on Rails на Ubuntu 18.04 с PostgreSQL
Ruby on Rails на Ubuntu 18.04 с 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.

Основные шаги

  1. Установить RVM (Ruby Version Manager)
  2. Установить Ruby через RVM
  3. Установить Node.js как JavaScript-движок
  4. Настроить RubyGems
  5. Установить Rails 5.2
  6. Установить и настроить PostgreSQL
  7. Создать и запустить первое приложение 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:

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 и rvm

Краткая проверка: 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 после установки

Если 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

Создание роли rails_dev и просмотр ролей в Postgres

Совет по безопасности

Используйте безопасные пароли (длинные фразы/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/

Главная страница нового Rails приложения

Генерируем 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/

Форма CRUD для модели Post с заполненным примером

Поздравляем — у вас работает 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)

  1. Подготовить сервер (обновление пакетов, установка build-essential).
  2. Установить RVM/rbenv и требуемую версию Ruby.
  3. Установить Node.js, Yarn (если нужен), и ruby-gems.
  4. Установить PostgreSQL и создать роль/базу.
  5. Склонировать проект, настроить database.yml (переменные окружения).
  6. Выполнить bundle install, rails db:setup, rails db:migrate.
  7. Настроить systemd unit для Puma / Docker контейнер.
  8. Настроить 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 рекомендуется для продакшен-проектов.

Таблица: проверка успешного запуска приложения на Rails и PostgreSQL

Поделиться: 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 быстро