我正在使用Rails、Puma和Capistrano3。我已经安装了capistrano3-puma
宝石。我使用Puma Jungle https://github.com/puma/puma/tree/master/tools/jungle/upstart启动了Puma。
如何在部署过程中重新启动Puma?
我正在使用Rails、Puma和Capistrano3。我已经安装了capistrano3-puma
宝石。我使用Puma Jungle https://github.com/puma/puma/tree/master/tools/jungle/upstart启动了Puma。
如何在部署过程中重新启动Puma?
您可以使用以下命令手动重新启动
bundle exec pumactl -P /home/deploy/.pids/puma.pid restart
请确保您指向正确的pid路径。
bundle exec pumactl restart
就足够了。 - Grzegorz Adam Kowalski生产环境
如果你正在生产环境中使用 Capistrano,你可以:
cap production deploy:restart
开发
如果您在开发环境中,可以开始查找pid。
ps aux | grep puma
你将会看到类似于这样的内容:
user 11654 0.0 13.4 870204 137016 ? Sl Jul07 0:39 puma 2.13.4 (tcp://0.0.0.0:3000) [NameOfYourApp]
用户名旁边的数字,例如11654
,是Puma服务器进程的ID(PID)。您可以手动终止它,然后重新启动服务器。执行此命令:
kill -s 15 11654
这个命令的意思是使用信号SIGTERM(代码15)来杀死进程ID为11654的进程。SIGTERM可以“友好地”关闭所有文件、连接、清除缓冲区等。
最后您要运行此命令:
puma -e development -p 3000 -d
Puma将在开发模式下重新启动,并侦听端口3000,执行将被守护进程化。
我遇到了这样的问题,环境发生了一些更改,我需要重新启动puma,但不想对整个应用进行完全部署。
我只想重启puma和nginx。以下是适用于我的命令:
$ bundle exec cap production deploy:restart
$ bundle exec cap production puma:restart
希望能对某人有所帮助
capistrano3-puma
gem,您不需要在部署后显式地重启puma。有一个任务add_default_hooks
,它在部署后执行puma:smart_restart
。cap -vT
查看任务列表。我认为cap puma:restart
就可以完成工作。install_plugin Capistrano::Puma, load_hooks: true
添加到您的 Capfile
中,那么一切都会很好。 - Daniel Bang通用的答案,适用于任何平台,并且由 Puma 服务器本身支持,是使用 tmp_restart
插件。
将其添加到您的 config/puma.rb
文件中。
plugin :tmp_restart
之后只需在想要重启 Puma 应用程序时触摸文件 (touch tmp/restart.txt
)。
来源:https://github.com/puma/puma/blob/master/lib/puma/plugin/tmp_restart.rb
cap production puma:stop
cap production puma:start
或者
cap production puma:restart
cap production puma:restart
- Abhinay