【发布时间】: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