📔 Оглавление
Для деплоя Ruby on Rails приложения установим на сервер на Ubuntu вручную по инстуркциям по ссылкам ниже
и создаете на сервере нового пользователя deployer по инструкции 🚀 Deploy > Создаем на сервере нового пользователя deployer
Устанавливаем под новым пользователем по инструкции 💎 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
Правим файл
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 > Как настроить запуск через 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 > Чтение