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

Установка Ruby on Rails на Ubuntu 22.04

• 8 min read • DevOps • Обновлено 27 Nov 2025
Установка Ruby on Rails на Ubuntu 22.04
Установка Ruby on Rails на Ubuntu 22.04

Логотип Ruby on Rails или схематическое изображение стековой архитектуры

Обзор

Ruby on Rails (RoR) — это свободный фреймворк для веб‑приложений, написанный на языке Ruby и распространяющийся по лицензии MIT. Rails предоставляет «полный стек»: структуру проекта, системы для работы с БД, шаблонизатор HTML, маршрутизацию и встроенные инструменты безопасности (защита от SQL‑инъекций, XSS, CSRF). Rails следует архитектуре model‑view‑controller (MVC) и принципам DRY (Don’t Repeat Yourself) и «Convention over Configuration». В этом руководстве мы устанавливаем Rails на Ubuntu 22.04, используем rbenv для управления версиями Ruby и PostgreSQL как базу данных.

Важно: примеры в статье используют Ruby 3.1.2 и Rails 7.0.2.4, вы можете заменить версии на актуальные, сохраняя совместимость.

Кому это нужно

  • Разработчикам, которые хотят локально или на сервере подготовить среду для Rails‑проектов.
  • Системным администраторам, настраивающим CI/CD или тестовые VM для Rails.
  • Руководителям команд, которые хотят стандартизировать окружение разработки.

Необходимые ресурсы

  • Ubuntu 22.04 (локальная машина или VPS).
  • Ненулевой пользователь с правами sudo.
  • PostgreSQL установлен или доступен для установки.

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

  • rbenv — менеджер версий Ruby, позволяет управлять локальными и глобальными версиями Ruby.
  • ruby‑build — плагин для rbenv, упрощающий сборку/установку версий Ruby из исходников.
  • Bundler — менеджер зависимостей для Ruby‑проектов.
  • Rails — веб‑фреймворк на Ruby.

Шаг 1. Установка пакетных зависимостей

Перед установкой Rails потребуются системные пакеты, Node.js и Yarn (для компиляции фронтенд-активов). Ниже — последовательность команд и пояснения.

Установка базовых утилит (gnupg2, apt‑transport‑https, curl):

sudo apt install gnupg2 apt-transport-https curl

Добавление репозитория NodeSource и установка LTS‑версии Node.js (на момент примера — v16):

curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

Добавление GPG‑ключа и репозитория Yarn:

curl -sS -o /etc/apt/trusted.gpg.d/yarn.gpg https://dl.yarnpkg.com/debian/pubkey.gpg
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

Обновление индексом пакетов и установка основных библиотек для сборки Ruby и работы с БД:

sudo apt update
sudo apt install git-core zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn

Подтвердите установку вводом Y и нажатием ENTER.

Примечание: если вы используете облачную VM, убедитесь, что дисковое пространство и память достаточны для компиляции Ruby (обычно требуется 1–2 ГБ ОЗУ и несколько сотен МБ свободного места; для больших билдов — больше).

Шаг 2. Установка и настройка rbenv

rbenv облегчает установку и переключение версий Ruby. В примере используется учётная запись alice — замените на вашего пользователя.

Выполните вход под нужным пользователем (локально делайте sudo -i или используйте su):

su - alice

Клонирование rbenv в домашнюю директорию:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

Добавьте rbenv в PATH и инициализацию в ~/.bashrc, затем перезагрузите сессию bash:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
 echo 'eval "$(rbenv init -)"' >> ~/.bashrc
 source ~/.bashrc

Установка плагина ruby-build, который нужен для установки версий Ruby:

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Добавьте путь плагина и перезагрузите сессию:

echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
 source ~/.bashrc

Проверка установки rbenv:

rbenv commands

Список команд rbenv

Если команда выполнена и показывает варианты, rbenv настроен корректно.

Шаг 3. Установка Ruby через rbenv

Установим Ruby 3.1.2 как пример стабильной версии, используемой в статье.

rbenv install 3.1.2

Установите версию по умолчанию глобально:

rbenv global 3.1.2

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

ruby -v

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

Установка Bundler (менеджера гемов):

gem install bundler

Вы увидите вывод установленного bundler в консоли.

Установка bundler завершена

Совет: если при установке гемов возникают ошибки, обратите внимание на лог сборки — часто не хватает системных библиотек (openssl, libffi) или прав. Убедитесь, что gcc и make установлены (build-essential), и что переменные окружения (например, PATH для rbenv) настроены верно.

Шаг 4. Установка Rails

После установки Ruby и Bundler установите Rails. В примере ставим Rails 7.0.2.4.

gem install rails -v 7.0.2.4

Установка может занять время — ставятся многочисленные зависимости (гемы). После установки выполните:

rbenv rehash

Проверьте версию Rails и список доступных команд:

rails -v
rails help

Установка Rails и вывод в консоль

Шаг 5. Настройка PostgreSQL как базы данных

Если PostgreSQL ещё не установлен, установите его через apt. Для работы Rails нужен пакет разработки libpq-dev:

sudo apt install libpq-dev -y

Установка libpq-dev

Создайте роль PostgreSQL для вашего приложения (в примере alice). Команда ниже создаёт роль и попросит задать пароль:

sudo -u postgres createuser -S -d -r -P alice

Параметры команды:

  • -S — не давать суперпользовательских прав;
  • -d — разрешить создание баз данных;
  • -r — разрешить создание ролей;
  • -P — запросить пароль.

Проверка входа под созданной ролью (используйте пароль, который задали):

sudo -u alice psql -U alice -h 127.0.0.1 -d postgres

Внутри psql можно выполнить:

\conninfo
\du

Подключение к PostgreSQL под ролью alice

Если подключение прошло — роль и пароль настроены корректно.

Шаг 6. Создание нового Rails‑проекта с PostgreSQL

Создаём проект myapp и указываем базу данных PostgreSQL:

rails new myapp -d postgresql

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

Перейдите в каталог проекта и отредактируйте файл config/database.yml (можно любым редактором, здесь nano):

cd myapp/
nano config/database.yml

Найдите секцию development и укажите свои параметры подключения (замените alice и mypassword на реальные значения):

username: alice
password: mypassword
host: localhost
port: 5432

Сохраните файл и выйдите из редактора.

Создаём базу данных и выполняем миграции:

rake db:create
rake db:migrate

Если возникли ошибки аутентификации — проверьте пароль, роль и настройки pg_hba.conf.

Запуск сервера разработки (пример с привязкой к IP машины — замените адрес):

rails server -b 192.168.10.15

В браузере перейдите по адресу http://192.168.10.15:3000 — вы увидите стандартную стартовую страницу Rails.

Запущенное Rails‑приложение в development

Стартовая страница Rails

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

  • Команда rails -v возвращает версию 7.x.
  • Ruby ruby -v показывает 3.1.2 (или желаемую версию).
  • rake db:create успешно создаёт базу данных PostgreSQL.
  • rails server запускается и доступен на порту 3000.
  • Bundler успешно устанавливает гемы без ошибок компиляции.

Частые проблемы и их решения

  1. Ошибка при установке гемов с native extensions (напр., nokogiri, pg):
    Решение: установите системные dev‑пакеты (libxml2-dev, libxslt1-dev, libpq-dev). Проверьте наличие build-essential.

  2. Gem install занимает слишком много времени или падает:
    Проверьте права на директории, свободное место на диске и доступ к сети (firewall/HTTP proxy).

  3. Ошибка аутентификации PostgreSQL:
    Убедитесь, что вы задали пароль при createuser и используете правильный host/port. Проверьте /etc/postgresql/*/main/pg_hba.conf на политику аутентификации.

  4. rails server не привязан к внешнему интерфейсу:
    Используйте параметр -b 0.0.0.0 или конкретный IP; проверьте firewall/ufw правила.

  5. После установки rbenv ruby не находится:
    Убедитесь, что сохранены изменения в ~/.bashrc и выполнен source ~/.bashrc; затем rbenv rehash.

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

  • RVM — полноценный менеджер Ruby с функциями установки и изоляции гемов. Rbenv легче для CI и совместим с системными пакетами.
  • asdf — универсальный менеджер версий для множества языков (Ruby, Node, Elixir и др.). Удобен, если у вас мульти-языковая среда.
  • Docker — запуск Rails в контейнере даёт воспроизводимость окружения; полезно для CI и продакшен‑деплоя.
flowchart TD
  A[Начальная задача] --> B{Нужна ли изоляция версий Ruby?}
  B -- Да --> C[rbenv или asdf]
  B -- Нужна расширенная изоляция --> D[RVM]
  B -- Окружение в контейнере --> E[Docker]
  C --> F[Выбор rbenv]
  D --> F
  E --> F

Модель мышления и heuristics

  • Разделяйте конфигурацию и секреты: храните пароли в переменных окружения, а не в репозитории.
  • Используйте rbenv для разработки и Docker для тестов/CI/деплоя — так вы получите гибкость и воспроизводимость.
  • Применяйте принцип наименьших привилегий для БД: создать роль с минимально необходимыми правами для приложения.

Факты и ключевые номера

  • Базовая версия Ubuntu в руководстве: 22.04.
  • Пример Ruby: 3.1.2.
  • Пример Rails: 7.0.2.4.
  • Порт Rails в development по умолчанию: 3000.
  • Порт PostgreSQL по умолчанию: 5432.

Контрольный список (роль‑ориентированный)

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

  • Установлен rbenv и нужная версия Ruby.
  • Установлен Bundler и Rails.
  • Создан проект rails new и настроен database.yml.
  • rake db:create выполняется успешно.

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

  • Установлены libpq-dev, build-essential и другие dev‑пакеты.
  • PostgreSQL настроен и доступен.
  • Настроен firewall/ufw, резервное копирование БД реализовано.

DBA:

  • Роль PostgreSQL создана с паролем и нужными привилегиями.
  • pg_hba.conf проверен на соответствие безопасности.

Playbook: быстрый план развёртывания (локально -> тест -> прод)

  1. Локальная разработка: rbenv + PostgreSQL локально.
  2. CI: собрать контейнер с той же версией Ruby и выполнить bundle install, rake db:migrate, rspec/miniTest.
  3. Тестовый сервер: деплой контейнера или release с systemd/nginx + puma/unicorn, подключение к тестовой БД.
  4. Продакшен: безопасные секреты (ENV/vault), HTTPS, резервное копирование БД, мониторинг.

Incident runbook — если приложение не стартует

  1. Проверить логи приложения (log/development.log или log/production.log).
  2. Проверить статус БД и подключение: psql -h host -U user -d dbname.
  3. Проверить переменные окружения: RAILS_ENV, DATABASE_URL, SECRET_KEY_BASE.
  4. Если ошибки миграций — выполнить rake db:migrate:status и откатить при необходимости rake db:rollback.
  5. Если проблема в гемах — пересоздать bundle: bundle install –clean и rbenv rehash.

Советы по безопасности и продакшену

  • Никогда не храните секреты и пароли в config/database.yml в репозитории. Используйте ENV или менеджер секретов.
  • Настройте SSL/TLS на уровне обратного прокси (nginx) и используйте HTTP Strict Transport Security (HSTS).
  • Отключите доступ к PostgreSQL извне, если это не требуется, или используйте VPN/частные сети.
  • Применяйте регулярные обновления безопасности для системы и гемов.

Совместимость и миграция версий

  • При переходе с Rails 5/6 на Rails 7 проверьте совместимость гемов и Ruby. Некоторые гемы могут требовать обновления или замены.
  • При обновлении Ruby убедитесь, что гемы пересобираются: bundle install и rbenv rehash.
  • Тестируйте миграции в staging перед запуском в production.

Шпаргалка — часто используемые команды

# Проверка версий
ruby -v
rails -v
node -v
yarn -v

# rbenv
rbenv install 3.1.2
rbenv global 3.1.2
rbenv rehash

# Bundler и Rails
gem install bundler
gem install rails -v 7.0.2.4
bundle install

# Управление БД
sudo -u postgres createuser -P alice
rake db:create
rake db:migrate

# Запуск сервера
rails server -b 0.0.0.0

Шаблон config/database.yml (минимальный фрагмент для development)

default: &default
  adapter: postgresql
  encoding: unicode
  host: localhost
  username: alice
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] || 'mypassword' %>
  port: 5432
  pool: 5

development:
  <<: *default
  database: myapp_development

Совет: в продакшене используйте переменные окружения (DATABASE_URL или отдельные переменные для логина/пароля).

Куда двигаться дальше

  • Изучите puma/unicorn для продакшен‑сервера приложений.
  • Настройте nginx как обратный прокси и статический сервер для активов.
  • Настройте CI/CD конвейер, включающий тесты и миграции.

Заключение

Поздравляем — вы настроили Ruby on Rails на Ubuntu 22.04, установили rbenv и Ruby 3.1.2, установили Bundler и Rails 7, подключили PostgreSQL и создали первый проект. Дальше автоматизируйте окружение (Docker/CI), добавьте мониторинг и настройте безопасное хранение секретов.

Ключевые рекомендации: используйте rbenv для управляемых версий Ruby, храните секреты вне репозитория, тестируйте миграции и применяйте принципы наименьших привилегий для БД.

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