2012-07-22 84 views
0

我正計劃添加一些任務到我的capistrano配方文件中,以賦予管理員遠程啓動/停止/重新啓動private_pub服務器的能力。但如果開始我可以使用像機架服務器能夠停止並重新啓動

desc "Start private_pub server" 
    task :start do 
    run "cd #{current_path};rackup private_pub.ru -s thin -E production -D" 
    end 

我找不到任何文檔如何停止或重新啓動機架服務器。我看到選項

-P, --pid FILE   file to store PID (default: rack.pid) 

但也許使用kill命令停止服務器 - 不是好主意?

回答

2

我在搜索相同的解決方案時發現了這個問題。

gist.github.com/3197633

基本上同時啓動你必須把它寫的PID號在/ tmp/PID的一個文件,然後當你去阻止它,你讀了文件,它運行殺死-9的過程中...

希望它有幫助。

0

您的錯誤在於使用kill -9是一個壞主意。這可能會導致數據不相關的丟失,據我所知,建議使用kill 2kill -INT,這相當於擊中'control-c',並且應該關閉一個正常的服務器。我個人已經開始使用TPW的God Gem來管理我的服務器。以下是我用於運行本地「geminabox」服務器的腳本,例如:

God.watch do |w| 
w.name = 'gemserver' 
    w.dir = '/usr/local/gemserver' 
    w.pid_file = "#{ENV['HOME']}/.god/pids/#{w.name}.pid" 
    ru = File.expand_path `which rackup` 
    w.start = "#{ru} -D #{w.dir}/config.ru -P #{w.pid_file}" 
    # w.stop = lambda { Process.kill(3, `lsof -i :9292`.chomp.to_i) } 
    w.behavior :clean_pid_file 
    w.keepalive 
end 
相關問題