2013-10-14 40 views
14

由於某些更改沒有在應用程序中顯示,因此我不確定獨角獸是否正確地重新啓動,因此我想在遠程服務器上手動重啓麒麟。我已導航到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 
+1

僅供參考此處的答案都是錯誤的。 – Fuser97381

回答

25

您沒有列出操作系統。但下列之一應該工作。

您將需要根/ 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 

嘗試重啓版本第一,但根據初始化腳本是怎麼寫的,可能沒有一個重新啓動命令,如果不工作,你可以做停止/啓動版本。

4

您可能需要root權限,但它應該只是/etc/init.d/unicorn_myapp restart(不包括run,這是不是一個shell命令)。

22

或者,取代依賴於與操作系統相關的/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

+0

fyi,相對'tmp/pids ...'路徑是故意的,而不是一個錯字......我的git鉤子在項目路徑中運行,持有一個本地的'tmp'文件夾......無論如何! :) –

+0

它也需要一個進程ID 'kill -HUP $ unicorn_pid ' – kamal