2013-10-14 18 views
14

cap deployを実行したときにユニコンが正しく再起動されるとは確信していません。そのため、リモートサーバーでユニコンを手動で再起動する必要がありました。 etc/init.dにナビゲートしてunicorn_myappのリストを参照してください。ディレクトリではありません(つまり、私はそれにcdできません)。私のdeploy.rbファイルの下にあるコードに基づいて、ここからユニコーンを再起動するためにできることはありますか?手動でユニコンを手動で再起動する方法

runが含まれていない、シェルされていない私はrun unicorn_myapp restartを実行しようとしましたが、それはrunあなたはrootになる必要がある場合がありますが、それはただ/etc/init.d/unicorn_myapp restartあるべきコマンド

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

FYI答えはすべて間違っている参照してください。 – Fuser97381

答えて

25

あなたはOSをリストしていません。次のいずれかが機能するはずです。ルート/使用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スクリプトが書かれた方法によっては、それは、restartコマンドを持っていない可能性があります停止/開始バージョンを行うことができます。

4

はないと述べましたコマンド)。

22

また、OSに依存するスクリプト/etc/init.d...に頼るのではなく、HUP (1)シグナルをそのマスタープロセスに送信する簡単な方法があります。ここで

は私がgit pushpost-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 ...'パスは意図的で、typoではありません...私のgitフックはローカル 'tmp'フォルダを持つプロジェクトパスで実行されています...とにかく! :) –

+0

また、プロセスIDが必要です 'kill -HUP $ unicorn_pid ' – kamal

関連する問題