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

Установка Ruby on Rails на Debian Buster 10 — с PostgreSQL

• 7 min read • DevOps • Обновлено 27 Nov 2025
Ruby on Rails на Debian Buster 10 — установка и CRUD
Ruby on Rails на Debian Buster 10 — установка и CRUD

О чём статья

  • Что настроим и почему это важно
  • Подготовка системы и предварительные требования
  • Пошаговая установка RVM и Ruby через RVM
  • Установка Node.js и Yarn, необходимые для обработки JavaScript в Rails
  • Обновление RubyGems и установка Rails 6
  • Установка и конфигурация PostgreSQL, создание роли и базы
  • Создание проекта Rails с PostgreSQL и генерация простого CRUD
  • Контрольные списки, критерии приёмки, отладка и советы по безопасности

Предварительные требования

  • Сервер с Debian Buster 10 (тестовый сценарий: 2 ГБ ОЗУ, 25 ГБ свободного места, 2 CPU). Эти ресурсы подходят для разработки и небольших тестовых окружений.
  • Подключение к интернету для загрузки пакетов и репозиториев
  • Доступ под sudo/root

Важно: на продакшн-серверах используйте выделенные пользователи, бэкапы и зашифрованные хранение паролей. Ниже есть раздел с мерами безопасности.

Что мы сделаем

  • Установим RVM и через него Ruby 2.6
  • Установим Node.js 12 и Yarn
  • Обновим RubyGems и установим Rails 6.0.2
  • Установим PostgreSQL и создадим роль для проекта
  • Создадим проект Rails с адаптацией config/database.yml
  • Сгенерируем простой scaffold для CRUD и запустим сервер

Шаг 1 — Установка RVM

Сначала установим пакет gnupg2, затем импортируем GPG-ключи для RVM и установим RVM с включённой установкой Ruby.

sudo apt install gnupg2

Импорт ключей GPG. Если ключевой сервер недоступен, попробуйте другой сервер или зеркала.

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2.69D6956105BD0E739499BDB

Установка RVM с автоматической установкой Ruby:

curl -sSL https://get.rvm.io | bash -s stable --ruby

Скриншот установки RVM

Загрузите RVM в текущую сессию:

source /usr/local/rvm/scripts/rvm

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

rvm version

Скриншот проверки RVM

Что важно знать

  • RVM управляет версиями Ruby на уровне пользователя и системы. Он удобен, когда нужно иметь несколько версий Ruby.
  • Альтернатива: rbenv. Если вы в контейнере или CI, иногда проще использовать системный ruby или пакетные менеджеры.

Шаг 2 — Установка Ruby через RVM

Обновите RVM и установите выбранную версию Ruby. В руководстве используется Ruby 2.6.

rvm get stable --autolibs=enable
usermod -a -G rvm root
rvm install ruby-2.6
rvm --default use ruby-2.6
ruby --version

Скриншот установки Ruby

Рекомендации

  • Убедитесь, что после установки в PATH первая найденная команда ruby — та, что управляется RVM.
  • Если вы ставите Ruby для не-root пользователей, выполняйте rvm установки под целевым пользователем.

Шаг 3 — Установка Node.js и Yarn

Rails использует движок Node для сборки JavaScript-ассетов. Установим Node.js 12 и Yarn.

sudo apt install gcc g++ make
curl -sL https://deb.nodesource.com/setup_12.x | bash -
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
sudo apt update
sudo apt install -y nodejs yarn
node --version
yarn --version

Скриншот установки NodeJS и Yarn

Примечание

  • Если у вас уже есть Node.js в другом репозитории, убедитесь в совместимости версий. Для сборки frontend-зависимостей современный Rails может требовать более новых версий Node.

Шаг 4 — Обновление RubyGems

RubyGems управляет gem-пакетами. Обновим его и отключим установку документации, чтобы экономить место.

gem update --system
gem -v

Если хотите отключить документацию при установке гемов:

echo 'gem: --no-document' >> ~/.gemrc

Результат: установка гемов будет происходить без документации, что ускоряет установку и экономит дисковое пространство.

Шаг 5 — Установка Ruby on Rails

Установим Rails 6.0.2 через gem. В примере используется минорная версия 6.0.2.

gem install rails -v 6.0.2
rails -v

Скриншот установки Rails

Советы

  • Для проектов с более новыми требованиями проверьте совместимость Ruby и Rails. Новые версии Rails могут требовать более свежий Ruby.

Шаг 6 — Установка и конфигурация PostgreSQL

Установим PostgreSQL и клиентские библиотеки, затем создадим роль для Rails-разработки.

sudo apt install postgresql postgresql-contrib libpq-dev -y
systemctl start postgresql
systemctl enable postgresql

Скриншот установки PostgreSQL

Зайти в psql под пользователем postgres:

sudo -i -u postgres psql

Смена пароля для встроенного пользователя postgres:

\password postgres

Создаём роль rails_dev с правами создания баз и паролем. В примере используется пароль aqwe123 — замените его на надёжный пароль или используйте секреты окружения.

create role rails_dev with createdb login password 'aqwe123';
\du

Скриншот добавления роли rails_dev

Важно

  • Никогда не храните пароли в репозитории. Используйте переменные окружения, зашифрованные credentials в Rails или менеджеры секретов.
  • Для доступа извне настройте pg_hba.conf и брандмауэр. По умолчанию PostgreSQL слушает локально.

Шаг 7 — Создание проекта Rails с PostgreSQL и простой CRUD

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

rails new myapp -d postgresql
cd myapp/
vim config/database.yml

В конфигурации для development и test укажите пользователские данные:

  username: rails_dev
  password: aqwe123
  host: localhost
  port: 5432

Затем создайте БД и выполните миграции:

rails db:setup
rails db:migrate

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

Чтобы запустить сервер (в примере привязка к конкретному IP и порту):

rails s -b 149.28.140.6 -p 8080

Откройте в браузере адрес, используя ваш IP и порт 8080, например:

http://10.5.5.31:8080/

Генерация простого CRUD

Сгенерируем scaffold для модели Post:

rails g scaffold Post title:string body:text
rake db:migrate

Запустите сервер, привязав его к нужному интерфейсу:

rails s -b 192.168.1.10 -p 8080

Откройте:

http://10.5.5.31:8080/posts/

Скриншот формы тестирования

Результат отправленной формы

Результат: простое приложение CRUD работает с PostgreSQL.

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

  • Rails проект создаётся без ошибок и запускается локально
  • Миграции успешно применяются к PostgreSQL
  • Маршрут /posts/ отображает интерфейс CRUD и сохраняет записи
  • Запуск сервера доступен по указанному IP и порту

Чеклист для разных ролей

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

  • Проверить ruby –version и rails -v
  • Убедиться, что bundle install проходит без ошибок
  • Тестировать миграции и seed

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

  • Настроить бэкапы PostgreSQL
  • Обновить firewall: разрешить нужные порты только для доверенных IP
  • Обеспечить мониторинг сервиса puma/rails

DevOps / CI:

  • Настроить CI сборки с использованием того же ruby и bundler
  • Автоматизировать миграции при деплое
  • Использовать контейнеризацию (Docker) для воспроизводимости

Информационная безопасность:

  • Убедиться, что пароли не находятся в репозитории
  • Настроить TLS/HTTPS для внешнего доступа
  • Ограничить доступ к базе через pg_hba.conf и firewall

Советы по отладке и типичные проблемы

  1. Ошибка при импортировании GPG-ключей
  • Попробуйте другой keyserver или используйте –keyserver hkp://keyserver.ubuntu.com
  1. Ошибки при bundle install, связанные с libpq
  • Установите libpq-dev и перезапустите установку гемов
  1. Rails не видит PostgreSQL
  • Проверьте параметры в config/database.yml
  • Проверьте, что postgres слушает локальный интерфейс: ss -ltnp | grep 5432
  1. Сервер не доступен извне
  • Проверьте, к какому IP привязан puma/rails
  • Для тестов используйте rails s -b 0.0.0.0 -p 8080
  • Настройте правила брандмауэра

Безопасность и лучшие практики

  • Не храните секреты в cleartext в config/database.yml в репозитории. Используйте:

    • Переменные окружения
    • Rails credentials (rails credentials:edit)
    • Менеджеры секретов (Vault, AWS Secrets Manager и т. п.)
  • Настройте TLS для внешнего трафика и используйте реверс-прокси (nginx) для HTTPS и статических файлов

  • Настройте регулярные бэкапы PostgreSQL и проверяйте восстановление

  • Ограничьте доступ по IP к админ-интерфейсу и базе данных

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

  • rbenv вместо RVM, если вы предпочитаете меньшую вмешиваемость в окружение пользователя
  • Docker-контейнеры для унификации окружений разработки и CI
  • Использование MySQL/MariaDB вместо PostgreSQL, если это требование проекта

Мини-методология развёртывания проекта в тестовом окружении

  1. Подготовка ОС и репозиториев
  2. Установка runtime (Ruby, Node)
  3. Установка СУБД и создание ролей
  4. Установка зависимостей проекта (bundle install, yarn install)
  5. Миграции и seed
  6. Запуск приложения и smoke-тест
  7. Мониторинг и бэкап

Короткий cheat sheet — полезные команды

sudo apt install gnupg2
curl -sSL https://get.rvm.io | bash -s stable --ruby
source /usr/local/rvm/scripts/rvm
rvm install ruby-2.6
rvm --default use ruby-2.6
sudo apt install -y nodejs yarn gcc g++ make
gem update --system
gem install rails -v 6.0.2
sudo apt install -y postgresql postgresql-contrib libpq-dev
sudo -i -u postgres psql
create role rails_dev with createdb login password 'aqwe123';
rails new myapp -d postgresql
cd myapp
rails db:setup
rails g scaffold Post title:string body:text
rake db:migrate
rails s -b 0.0.0.0 -p 8080

Тесты и критерии проверки

  • Unit: модель Post должна валидно сохранять запись с title и body
  • Integration: маршрут /posts/ должен возвращать 200 и содержать форму создания
  • Acceptance: пользователь может создать, отредактировать и удалить запись через UI

Совместимость и миграционные заметки

  • Debian Buster содержит стабильные пакеты, но версии Node и Ruby могут отличаться от upstream. Для более новых стеков рассмотрите Debian Bullseye или использование Docker
  • При миграции с другой версии Rails проверьте deprecated-методы и обновите gemfile

Риски и смягчение

  • Хранение паролей в базе конфигурации: использовать шифрование и секреты
  • Открытие порта базы данных в интернет: ограничьте доступ firewall и VPN
  • Несоответствие версий Ruby/Rails: фиксируйте версии в .ruby-version и Gemfile.lock

Заключение

Вы установили RVM и Ruby 2.6, Node.js и Yarn, Rails 6 и PostgreSQL на Debian Buster 10, создали проект myapp и сгенерировали простой CRUD на основе scaffold. Далее перенесите секреты в безопасное хранилище, настройте бэкапы и настройте CI/CD для автоматического развёртывания.

Важно: замените демонстрационные пароли на надёжные секреты перед использованием в рабочей среде.

Extras: краткое содержание и советы для быстрого старта ниже.

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