如何手动重启unicorn

时间:2013-10-14 01:06:13

标签: ruby-on-rails 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

3 个答案:

答案 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命令。)