Установка Ruby on Rails на Debian Buster 10 — с PostgreSQL
О чём статья
- Что настроим и почему это важно
- Подготовка системы и предварительные требования
- Пошаговая установка 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 в текущую сессию:
source /usr/local/rvm/scripts/rvmПроверьте установку:
rvm version
Что важно знать
- 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
Рекомендации
- Убедитесь, что после установки в 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
Примечание
- Если у вас уже есть 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
Советы
- Для проектов с более новыми требованиями проверьте совместимость Ruby и Rails. Новые версии Rails могут требовать более свежий Ruby.
Шаг 6 — Установка и конфигурация PostgreSQL
Установим PostgreSQL и клиентские библиотеки, затем создадим роль для Rails-разработки.
sudo apt install postgresql postgresql-contrib libpq-dev -y
systemctl start postgresql
systemctl enable postgresql
Зайти в psql под пользователем postgres:
sudo -i -u postgres psqlСмена пароля для встроенного пользователя postgres:
\password postgresСоздаём роль rails_dev с правами создания баз и паролем. В примере используется пароль aqwe123 — замените его на надёжный пароль или используйте секреты окружения.
create role rails_dev with createdb login password 'aqwe123';
\du
Важно
- Никогда не храните пароли в репозитории. Используйте переменные окружения, зашифрованные 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
Чтобы запустить сервер (в примере привязка к конкретному IP и порту):
rails s -b 149.28.140.6 -p 8080Откройте в браузере адрес, используя ваш IP и порт 8080, например:
Генерация простого CRUD
Сгенерируем scaffold для модели Post:
rails g scaffold Post title:string body:text
rake db:migrateЗапустите сервер, привязав его к нужному интерфейсу:
rails s -b 192.168.1.10 -p 8080Откройте:


Результат: простое приложение 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
Советы по отладке и типичные проблемы
- Ошибка при импортировании GPG-ключей
- Попробуйте другой keyserver или используйте –keyserver hkp://keyserver.ubuntu.com
- Ошибки при bundle install, связанные с libpq
- Установите libpq-dev и перезапустите установку гемов
- Rails не видит PostgreSQL
- Проверьте параметры в config/database.yml
- Проверьте, что postgres слушает локальный интерфейс: ss -ltnp | grep 5432
- Сервер не доступен извне
- Проверьте, к какому 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, если это требование проекта
Мини-методология развёртывания проекта в тестовом окружении
- Подготовка ОС и репозиториев
- Установка runtime (Ruby, Node)
- Установка СУБД и создание ролей
- Установка зависимостей проекта (bundle install, yarn install)
- Миграции и seed
- Запуск приложения и smoke-тест
- Мониторинг и бэкап
Короткий 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: краткое содержание и советы для быстрого старта ниже.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента