Skip to content

Latest commit

 

History

History
188 lines (146 loc) · 5.35 KB

handmade.md

File metadata and controls

188 lines (146 loc) · 5.35 KB

🚀 Deploy

Ручной деплой Ruby on Rails

📔 Оглавление

Для деплоя Ruby on Rails приложения установим на сервер на Ubuntu вручную по инстуркциям по ссылкам ниже

и создаете на сервере нового пользователя deployer по инструкции 🚀 Deploy > Создаем на сервере нового пользователя deployer

Настройка Rails

Устанавливаем под новым пользователем по инструкции 💎 Ruby > Установка rbenv

Предположим что вы уже используете систему контроля версий Git, и у вас уже есть удаленный репозиторий где размещен код проекта. Поэтому теперь зайдем на сервер и вытяним код на тачку проекта для этого подойте каталог /opt а так же лучше сразу сделать подпапку, подпапки:

root@ubuntu:~$ sudo su deployer
$ bash
deployer@ubuntu:~$ cd /opt
deployer@ubuntu:/opt$ sudo mkdir xx_backend
deployer@ubuntu:/opt$ sudo chown deployer xx_backend
deployer@ubuntu:/opt$ cd xx_backend
deployer@ubuntu:/opt/xx_backend$ mkdir releases
deployer@ubuntu:/opt/xx_backend$ cd releases
deployer@ubuntu:/opt/xx_backend/releases$ git clone --branch master https://gitlab.com/xx/xx_backend.git /opt/xx_backend/releases/202401130203

и сразу делаем ссылку для приложения

ln -s /opt/xx_backend/releases/202401130203 /opt/xx_backend/current

прежде чем устанавливать гемы, могут понадобиться зависимости например для корректной установки гема psych надо установить

sudo apt-get install -y libyaml-dev

а для гема pg

sudo apt-get install -y libpq-dev

для гема unf_ext

sudo apt-get install -y g++

перейдем туда и установим гемы

deployer@ubuntu:/opt$ cd xx_backend/current
deployer@ubuntu:/opt/xx_backend/current$ bundle

если необходимо PostgreSQL, то воспользуйтесь инстуркцией 🐘 PostgreSQL > Установка PostgreSQL на Ubuntu

Меняем данные для подключения к бд config/database.yml

production:
  <<: *default
  host: localhost
  database: xx
  username: xx
  password: xx

запускаем консоль проекта

RAILS_ENV=production bundle e rails c

выполняем миграции

RAILS_ENV=production bundle e rails db:migrate

надо создать

vim config/master.key 

и прописать там содержимое локального файла из .gitignore

cat config/master.key 

можете проверить по инструкции 💎 Ruby > Ручной запуск puma без nginx

Настройка Nginx

Правим файл

sudo vim /etc/nginx/sites-available/default
upstream xx_backend {
        server unix:///opt/xx_backend/current/tmp/puma.sock;
}

server {
        listen 80;

        server_name api.xx.ru;

        proxy_set_header Host $host;

        location / {
                proxy_pass http://xx_backend;
        }
}

перезагружаем nginx

sudo service nginx restart

Делаем запуск через Systemd

Делаем запуск по инструкци 🔧 Systemd > Как настроить запуск через systemctl

Повторный деплой

После того как запушили в git заходим на сервер под юзером deployer

sudo su deployer
bash

клонируем в новый каталог

git clone --branch master https://gitlab.com/xx/xx_backend.git /opt/xx_backend/releases/202401170118

переходим туда и ставим гемы

cd /opt/xx_backend/releases/202401170118
bundle

надо создать ключ для секретов

vim config/master.key 

прописать там содержимое локального файла из .gitignore

cat config/master.key 

выполните миграции, если появились новые

RAILS_ENV=production bundle e rails db:migrate

меняем ссылку

rm /opt/xx_backend/current
ln -s /opt/xx_backend/releases/202401170118 /opt/xx_backend/current

перезагружаем nginx

sudo service nginx restart

и сам проект

sudo systemctl restart xx.target

проверям логи для сервиса xx-web.service по инструкции 📔 Journalctl > Чтение