我正在尝试在乘客 6 中使用新的通用语言支持。在开发时,我可以生成我的演示 Go 应用程序,如下所示:
passenger start --app-start-command 'env PORT=$PORT ./main'
一切正常。
在我的服务器(运行 Debian Stretch)上,当我尝试运行完全相同的命令时出现以下错误:
[ E 2019-01-02 20:17:13.7593 7371/Trage/Cor/App/Implementation.cpp:221 ]:无法为应用程序生成进程(...):准备生成一个操作系统时发生错误应用程序进程:无法连接到 TCP 套接字“127.0.0.1:5000”:无法分配请求的地址 (errno=99)
当我将命令运行为root
. 但是,我可以直接运行 go 二进制文件(env PORT=5000 ./main
)。
netstat -ntulp
在尝试启动乘客之前和之后运行显示没有任何运行127.0.0.1:5000
。启动乘客后,我的服务器正在监听:::5000
. 因此,Passenger 绑定到空的 IPv4 端口似乎存在问题。
我还要提到,我能够在同一台服务器上成功地使用Passenger 启动rails 应用程序。
任何想法从哪里开始寻找?
事实证明,该问题与github上的this issue #2144有关。起初我错过了它,因为他们注意到的最初症状是 CPU 峰值。
有一个带有修复的分支- 从该分支构建乘客为我解决了这个问题。