如何在部署后重启 Puma?

53

1
需要指定阶段,请使用以下命令重启puma生产版:cap production puma:restart - Abhinay
6个回答

67

您可以使用以下命令手动重新启动

bundle exec pumactl -P /home/deploy/.pids/puma.pid restart

请确保您指向正确的pid路径。


这取决于您如何部署应用程序。使用Capistrano,您可以编写任务并将其包含在部署过程中,或者使用类似God http://godrb.com/的工具,您也可以将其与Capistrano集成。 - JamesDullaghan
7
对我来说,执行 bundle exec pumactl restart 就足够了。 - Grzegorz Adam Kowalski

25

生产环境

如果你正在生产环境中使用 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,执行将被守护进程化。


17

我遇到了这样的问题,环境发生了一些更改,我需要重新启动puma,但不想对整个应用进行完全部署。

我只想重启puma和nginx。以下是适用于我的命令:

$ bundle exec cap production deploy:restart
$ bundle exec cap production puma:restart

希望能对某人有所帮助


2
据我所知,如果您正在使用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

1

0
cap production puma:stop
cap production puma:start

或者

cap production puma:restart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接