【问题标题】:rackup server with ability to stop and restart具有停止和重新启动能力的机架服务器
【发布时间】:2012-07-22 08:01:56
【问题描述】:

我计划在我的 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 命令来停止服务器 - 不是好主意?

【问题讨论】:

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


    【解决方案1】:

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

    gist.github.com/3197633

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

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      你是对的,因为使用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
      

      【讨论】:

        猜你喜欢
        • 2011-03-07
        • 1970-01-01
        • 2019-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 2023-04-02
        • 2012-11-19
        相关资源
        最近更新 更多