当我运行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
答案 0 :(得分:28)
你没有列出操作系统。但下列之一应该有效。
你需要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脚本的编写方式,它可能没有重启命令,如果不起作用,则可以执行停止/启动版本。
答案 1 :(得分:26)
或者,不依赖于依赖于操作系统的/etc/init.d...
脚本,重新启动独角兽的一种简单方法是将HUP (1)
信号发送到其主进程。
以下是我在git push
通过post-receive
挂钩后自动重新加载应用的方式:
#!/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的位置。
有关详细信息,请参阅unicorn SIGNALS documentations
答案 2 :(得分:5)
您可能必须是root用户,但它应该只是/etc/init.d/unicorn_myapp restart
(不包括run
,这不是shell命令。)