16

由于某些更改未显示在应用程序中,我不确定在我运行时 unicorn 是否能正常重启cap deploy,因此我想在我的远程服务器上手动重启 unicorn。我已经导航到etc/init.d并查看了一个列表,unicorn_myapp但它不是一个目录(即我不能 cd 进入它)。根据我的 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
4

3 回答 3

31

你没有列出操作系统。但以下其中一项应该有效。

你需要是 root / 使用 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

首先尝试重新启动版本,但根据初始化脚本的编写方式,它可能没有重新启动命令,如果这不起作用,您可以执行停止/启动版本。

于 2013-10-14T01:10:47.133 回答
28

或者,不依赖于依赖于/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 的位置。

有关更多详细信息,请参阅独角兽 SIGNALS 文档

于 2013-12-21T13:31:50.400 回答
6

您可能必须是 root,但它应该只是/etc/init.d/unicorn_myapp restart(不要包含run,这不是 shell 命令)。

于 2013-10-14T01:10:02.057 回答