【问题标题】:Webrick Fails to Run as Daemon, no Error MessageWebrick 无法作为守护程序运行,没有错误消息
【发布时间】:2010-08-03 14:27:59
【问题描述】:

运行带有 Rails 2.3.4 和 Webrick 1.3.1 的 Ubuntu Server 10.04;当通过script/server -e production 调用时,我们的rails 应用程序运行良好,但尝试通过使用-d 标志调用它作为守护进程来测试它会产生以下输出:

=> Booting WEBrick
=> Rails 2.3.4 application starting on http://0.0.0.0:3000

日志中没有产生任何内容,其他 Rails 应用程序将毫无问题地独立运行。

【问题讨论】:

  • webrick 服务器绑定 :3000 是否正确?如果您telnet localhost 3000,它会打开连接并等待吗?
  • A ps aux | grep ruby 显示没有 Webrick 实例正在运行,所以不,它没有正确绑定(或者根本没有运行,就此而言)
  • 还有其他东西绑定到那个端口吗? sudo lsof -i 应该有助于确定这一点。
  • 没有绑定到端口,如尝试 telnet 或使用 sudo lsof -i 所示

标签: ruby-on-rails ruby ubuntu webrick


【解决方案1】:

我假设你在 3000 端口运行 Webrick

>>$ sudo netstat -anp | grep 3000 tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 8822/ruby >>$ sudo kill -9 8822

【讨论】:

    【解决方案2】:

    我并不是要与您选择 Webrick 作为生产服务器相矛盾,也许我对您选择 Webrick 的原因有些遗漏,但您是否考虑过其他替代方案?我敢打赌你已经知道这一切,但 Webrick 是提供的 ruby​​ 服务器,它也是最慢的 ruby​​ 服务器选择。

    一些最受欢迎的生产服务器选择是:

    Passenger 可能是目前最受欢迎的生产选择,因为它易于配置、速度和功能。

    如果 Webrick 有一个特定的用例使它比任何其他服务器选择更好,我很想知道。

    【讨论】:

      【解决方案3】:

      您可以在此处添加补丁以启用错误日志:https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/core_ext/process/daemon.rb#L16

      unless noclose
        STDIN.reopen "/dev/null"       # Free file descriptors and
        STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
        STDERR.reopen '/tmp/rails_daemon_err.log', 'a'
      end
      

      现在,当您使用-d 启动rails 服务器时,错误日志将附加到/tmp/rails_daemon.log

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-02
        • 2014-08-29
        • 2015-06-02
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-17
        • 1970-01-01
        相关资源
        最近更新 更多