gpt4 book ai didi

deployment - Capistrano 和 systemd 集成

转载 作者:行者123 更新时间:2023-12-04 17:53:43 25 4
gpt4 key购买 nike

我想将我的单元文件保存在源代码控制中(例如,在 config 中),以便在 capistrano 部署之后,该单元将被复制到 systemd dir,服务(例如 puma)将重新启动。实现这一目标的最佳方法是什么?

我想简单地添加 a post-deploy task例如(未经测试的代码)

namespace :deploy do
[...]

before :published, :systemd
desc 'systemd'
task :systemd do
on roles(:web), in: :groups, limit: 3, wait: 10 do
within release_path do
execute "sudo cp config/puma.service /etc/systemd/system/puma.service"
execute "sudo cp config/puma-init /usr/bin/puma-init"
execute "sudo systemctl daemon-reload"
execute "sudo systemctl restart puma"
end
end
end
end

最佳答案

这似乎可行,但我仍然想知道是否有更优雅的解决方案

namespace :deploy do
[...]

before :published, :systemd
desc 'systemd integration'
task :systemd do
on roles(:web), in: :groups, limit: 3, wait: 10 do
within shared_path do
execute "sudo cp #{shared_path}/config/puma.service /etc/systemd/system/puma.service"
execute "sudo cp #{shared_path}/config/puma-init /usr/bin/puma-init"
execute "sudo systemctl daemon-reload"
execute "sudo systemctl restart puma"
end
end
end
end

此外,请注意,您需要

set :pty, true

否则 sudo 将不起作用。

关于deployment - Capistrano 和 systemd 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42192083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com