【问题标题】:Get Thin (bundle exec thin) to work with CircusGet Thin (bundle exec thin) 与 Circus 一起工作
【发布时间】:2014-07-23 23:22:48
【问题描述】:

我使用 Circus 作为 Rails 项目的主管,但我遇到了一些奇怪的问题,无法让它与我选择的 Ruby 服务器 Thin 一起工作。这是我的circus.ini

[circus]
check_delay = 5

[socket:server]
host = 127.0.0.1
port = 8080

[watcher:server]
working_dir = /home/myuser/myproject/myproject
cmd = bundle exec thin start -C /home/myuser/myproject/etc/thin.yml -S $(circus.sockets.server)
use_sockets = True
numprocesses = 3

stdout_stream.class = FileStream
stdout_stream.filename = /home/myuser/myproject/log/circus_server.log
stdout_stream.time_format = %Y-%m-%d %H:%M:%S

[env:server]
RAILS_ENV=production

但是当我开始马戏团 (sudo service circus start) 时,这是我在日志中发现的:

$ 猫日志/circus.log 2014-06-03 10:42:27 circus[30987] [INFO] 在 pid 30987 上启动 master 2014-06-03 10:42:27 马戏团[30987] [INFO] 套接字开始 2014-06-03 10:42:27 circus [30987] [WARNING] “服务器”中的错误:[Errno 2] 没有这样的文件或目录 2014-06-03 10:42:27 circus [30987] [WARNING] “服务器”中的错误:[Errno 2] 没有这样的文件或目录 2014-06-03 10:42:27 circus [30987] [WARNING] “服务器”中的错误:[Errno 2] 没有这样的文件或目录 2014-06-03 10:42:27 circus [30987] [WARNING] “服务器”中的错误:[Errno 2] 没有这样的文件或目录 2014-06-03 10:42:27 circus [30987] [WARNING] “服务器”中的错误:[Errno 2] 没有这样的文件或目录 2014-06-03 10:42:27 马戏团[30987] [INFO] 服务器停止 2014-06-03 10:42:27 circus[30987] [INFO] Arbiter 现在等待命令

事实上,我将cmd 更改为任何其他命令,例如python -m SimpleHTTPServer,并且它起作用了。这里发生了什么?

编辑:当我使用 --log-level debug 运行 circusd 时,这里是 what happens...不管我的 circus.ini 中的 copy_env = True 是什么,我仍然得到相同的输出。

【问题讨论】:

  • 你能分享你的etc/thin.yml吗?我试图让马戏团处理套接字并绑定 3 个瘦进程,但我得到的只是第一个绑定 Listening on 0.0.0.0:137, CTRL+C to stop,另外两个得到一个“正在使用的端口”错误。
  • ps 输出显示它试图以thin -S 137 开始,这真的是将套接字绑定到瘦进程的正确方法吗?
  • 能像 Circus 那样绑定到已经打开的套接字吗?

标签: python ruby-on-rails thin circusd


【解决方案1】:

您得到的[Errno 2] No such file or directory 可能意味着Circus 没有找到bundle。 您可以尝试将您的 RVM bin 目录添加到您的路径中,如下所示:

[env:server]
PATH=$PATH:/path/to/your/rvm/bin

您最可能需要的文件夹是“wrappers”,因为它包含 ruby​​ 和 gems 脚本,所以试试吧:

PATH=$PATH:/path/to/your/.rvm/wrappers/<your ruby version>

【讨论】:

    【解决方案2】:

    我遇到了你描述的同样的问题。

    只需在您的 [watcher:NAME] 配置中添加 copy_env = True

    [watcher:server]
    working_dir = /home/myuser/myproject/myproject
    cmd = bundle exec thin start -C /home/myuser/myproject/etc/thin.yml -S $(circus.sockets.server)
    use_sockets = True
    numprocesses = 3
    
    stdout_stream.class = FileStream
    stdout_stream.filename = /home/myuser/myproject/log/circus_server.log
    stdout_stream.time_format = %Y-%m-%d %H:%M:%S
    
    copy_env = True
    

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 2016-02-06
      • 2013-11-18
      相关资源
      最近更新 更多