【发布时间】:2020-11-30 09:21:40
【问题描述】:
如果我问这个问题很糟糕,请告诉我,但这是我的情况。我正在尝试在 AWS EC2 上为我的组织设置一个 phabricator 服务器。主 phabricator 服务器很好,但我很难让通知 (aphlict) 服务器正常工作。
- 我可以使用
phabricator/.bin/aphlict start成功启动服务器(或者至少phabricator/.bin/aphlict status提供Aphlict (1461) is running.) - 虽然奇怪的是,
phabricator/.bin/aphlict debug给出了Error: error:0906D06C:PEM routines:PEM_read_bio:no start line和一个未捕获的异常Error: EACCES: permission denied, open '/var/log/aphlict.log' - 我在 Firefox 中的控制台给出了
Firefox can’t establish a connection to the server at wss://phabricator.<redacted>.com:22280/. - 我在 phabricator 上的通知服务器配置页面显示
[cURL/7] (https://phabricator.<redacted>.com:22280/) <CURLE_COULDNT_CONNECT>cURL 库在发出请求时引发错误。您可以在 cURL 站点上找到有关此错误(错误代码:7)的更多信息:http://curl.haxx.se/libcurl/c/libcurl-errors.html#CURLECOULDNTCONNECT`
我拼命尝试遵循https://phabricator.tbmh.org/book/phabricator/article/notifications/ 的说明,但我真的不太了解网络套接字、HTTPS、TCP 或 SSL。我正在通过 HTTPS 为我的 phabricator 网站提供服务,我很确定我需要做一些这样的版本:
如果您通过 HTTPS 提供 Phabricator,您还必须通过 HTTPS 提供 websockets。浏览器将拒绝从 HTTPS 页面连接到 ws:// websockets。
如果客户端通过 HTTPS 连接到 Phabricator,Phabricator 会自动从 notification.servers 中选择合适的 HTTPS 服务,并指示浏览器使用 wss:// 打开 websocket 连接。
最简单的方法是使用 SSL 密钥和证书配置 Aphlict,并让它直接终止 SSL。
但不幸的是,我无法确切地弄清楚我应该改变什么才能让这一切正常工作。
这是我的sudo ./bin/config get notification.servers:
{
"config": [
{
"key": "notification.servers",
"source": "local",
"value": [
{
"type": "client",
"host": "phabricator.<redacted>.com",
"port": 22280,
"protocol": "https"
},
{
"type": "admin",
"host": "127.0.0.1",
"port": 22281,
"protocol": "http"
}
],
"status": "set",
"errorInfo": null
},
{
"key": "notification.servers",
"source": "database",
"value": null,
"status": "unset",
"errorInfo": null
}
]
}
这是我的phabricator/conf/aphlict/aphlict.default.json:
{
"servers": [
{
"type": "client",
"port": 22280,
"listen": "0.0.0.0",
"ssl.key": "/etc/letsencrypt/live/phabricator.<redacted>.com/fullchain.pem",
"ssl.cert": "/etc/letsencrypt/live/phabricator.<redacted>.com/privkey.pem",
"ssl.chain": "/etc/letsencrypt/live/phabricator.<redacted>.com/chain.pem"
},
{
"type": "admin",
"port": 22281,
"listen": "127.0.0.1",
"ssl.key": "/etc/letsencrypt/live/phabricator.<redacted>.com/fullchain.pem",
"ssl.cert": "/etc/letsencrypt/live/phabricator.<redacted>.com/privkey.pem",
"ssl.chain": "/etc/letsencrypt/live/phabricator.<redacted>.com/chain.pem"
}
],
"logs": [
{
"path": "/var/log/aphlict.log"
}
],
"pidfile": "/var/tmp/aphlict/pid/aphlict.pid"
}
我还在 AWS 的 22281 和 22280 端口上添加了 TCP 入站 0.0.0.0/0 和 ::/0 规则。
【问题讨论】:
标签: node.js ssl amazon-ec2 websocket phabricator