43 lines
2.0 KiB
Markdown
43 lines
2.0 KiB
Markdown
---
|
||
status: seed
|
||
type: guide
|
||
tags:
|
||
- programming
|
||
- ruby-on-rails
|
||
- deploy
|
||
created: 2026-05-29
|
||
updated: 2026-05-29
|
||
title: Capistrano deploy через systemd
|
||
source: "[[Команды для деплоя с помощью Capistrano]]"
|
||
---
|
||
|
||
# Capistrano deploy через systemd
|
||
|
||
Заметка про выдачу минимальных `sudo`-прав для деплоя Rails-приложения через Capistrano, когда сервисы управляются через `systemd`.
|
||
|
||
## Sudoers
|
||
|
||
В `/etc/sudoers` задаётся alias для команд, которые Capistrano может выполнять без пароля:
|
||
|
||
```sudoers
|
||
Cmnd_Alias PUMA_CONTROL = /usr/bin/mv /tmp/navigation_backend_puma_production.service /etc/systemd/system/, /usr/bin/mv /tmp/navigation_backend_puma_production.socket /etc/systemd/system/, /bin/systemctl daemon-reload, /bin/systemctl enable navigation_backend_puma_production, /bin/systemctl start navigation_backend_puma_production, /bin/systemctl stop navigation_backend_puma_production, /bin/systemctl restart navigation_backend_puma_production, /bin/systemctl enable navigation_backend_puma_production.socket, /bin/systemctl restart navigation_backend_sidekiq_production.service, /bin/systemctl restart navigation_backend_solid_queue_production.service, /bin/systemctl restart solid_queue
|
||
deploy ALL = NOPASSWD: PUMA_CONTROL
|
||
```
|
||
|
||
Где:
|
||
- `deploy` — пользователь, от имени которого выполняется деплой;
|
||
- `navigation_backend` — имя приложения в service/socket unit-файлах.
|
||
|
||
## Команды деплоя
|
||
|
||
```bash
|
||
cap production puma:install
|
||
cap production deploy
|
||
```
|
||
|
||
`puma:install` кладёт `systemd` unit-файлы, после чего `deploy` перезапускает Puma и фоновые сервисы без интерактивного ввода пароля.
|
||
|
||
## Связанные заметки
|
||
- [[Ruby On Rails]]
|
||
- [[Sidekiq - основа работы]]
|