如何手动重启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命令)。