后台的 puma 生产服务器:omniauth 登录到 stdout 失败导致错误

puma production server in background: omniauth logging to stdout failed cause error

我正在使用 rails + puma 作为我的生产服务器。我使用 httpd 设置虚拟机并将请求转发到 localhost:3000。我用来启动我的 puma 服务器的命令是(已经在应用程序文件夹中)

puma -e production -p 3000 &

当我仍然使用 ssh 登录服务器时,我的网络应用程序一切正常。只有一些日志实际出现在屏幕上(我没有注意它)。但是,当我退出 ssh 会话时。我不能使用 omniauth(a gem)。我查看了服务器日志:

Errno::EIO (Input/output error @ io_write - <STDERR>):

我在网上找过这个——这是一个 IO 连接问题,在我的情况下,原因应该是生成 puma 的父进程已经完成,但 puma 试图向它记录一些东西。

所以我使用了重定向并希望控制台没问题:

puma -e production -p 3000 > log/console.log &

但问题依然存在

到目前为止,我认为它只与 omniauth 有关:它总是记录到标准输出,即使我这样做了“https://github.com/intridea/omniauth/issues/583”。

所以现在我想我可以尝试更改 omniauth 的记录器或尝试 "give a stdout" 到 omniauth,即使它是 运行 在后台

非常感谢:)

事实证明日志记录是为了警告并记录到 stderr 而不是 stdout。所以我通过以下命令解决了这个问题

puma -e production -p 3000 1> log/console.log 2>console_err.log &