具有停止和重启能力的rackup服务器

时间:2012-07-22 08:01:56

标签: ruby-on-rails ruby-on-rails-3 capistrano rack

我打算在我的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

我找不到任何文档如何停止或重新启动rackup服务器。我看到选项

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

但也许使用kill命令来停止服务器 - 不是很好主意?

2 个答案:

答案 0 :(得分:2)

我在搜索相同的解决方案时发现了这一点。

gist.github.com/3197633

基本上在启动过程时你将pid编号写入/ tmp / pids中的文件然后当你去停止它时你会读取该文件并运行kill -9 ...

希望它有所帮助。

答案 1 :(得分: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