如何手动重启unicorn
我不确定当我运行cap deploy
时unicorn正在重新启动,因为应用程序中没有显示某些更改,因此我想在远程服务器上手动重启unicorn。 我已经导航到etc/init.d
并查看unicorn_myapp
的列表,但它不是一个目录(即我无法进入它)。 基于我的deploy.rb文件中的以下代码,我可以从这里做一些重启独角兽的事情吗?
我试图run unicorn_myapp restart
但它说run
不是命令
namespace :deploy do %w[start stop restart].each do |command| desc "#{command} unicorn server" task command, roles: :app, except: {no_release: true} do run "/etc/init.d/unicorn_#{application} #{command}" end end
你没有列出操作系统。 但下列之一应该有效。
你需要root / use sudo
/etc/init.d/unicorn_myapp restart /etc/init.d/unicorn_myapp stop /etc/init.d/unicorn_myapp start service unicorn_myapp restart service unicorn_myapp stop service unicorn_myapp start
首先尝试重启版本,但是根据init脚本的编写方式,它可能没有重启命令,如果不起作用,则可以执行停止/启动版本。
或者,不依赖于依赖于OS的/etc/init.d...
脚本,重启unicorn的一种简单方法是将HUP (1)
信号发送到其主进程。
以下是我通过post-receive
hook在git push
之后自动重新加载应用程序的方法:
#!/bin/sh unicorn_pid=`cat /tmp/pids/unicorn.pid` echo "Restarting Unicorn ($unicorn_pid)" kill -HUP $unicorn_pid
在你的情况下,/ /etc/init.d/unicorn_myapp restart
脚本可能就是这样做的。 检查unicorn.conf以获取其pidfile的位置。
有关更多详细信息,请参阅独角兽SIGNALS文档
您可能必须是root用户,但它应该只是/etc/init.d/unicorn_myapp restart
(不包括run
,这不是shell命令)。