问题描述
如果我对这个问题的要求不好,请告诉我,但这是我的情况。我正在尝试为我的组织在AWS EC2上设置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网站http://curl.haxx.se/libcurl/c/libcurl-errors.html#CURLECOULDNTCONNECT` 上找到有关此错误的更多信息(错误代码:7)。
我极力尝试遵循https://phabricator.tbmh.org/book/phabricator/article/notifications/中的说明,但我确实不太了解Web套接字,HTTPS,TCP或SSL。我正在通过HTTPS为我的phacicator网站提供服务,并且很确定我需要执行以下操作:
如果您通过HTTPS服务Phabricator,则还必须通过HTTPS服务Websocket。浏览器将拒绝从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","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","listen": "127.0.0.1","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
规则。
解决方法
我终于得到了解决方案。最后,我只是使用了.pem
文件的错误排列...它应该是这样的:
"ssl.key": "/etc/letsencrypt/live/phabricator.<redacted>.com/privkey.pem","ssl.cert": "/etc/letsencrypt/live/phabricator.<redacted>.com/cert.pem","ssl.chain": "/etc/letsencrypt/live/phabricator.<redacted>.com/fullchain.pem"