网站宕机 - 应用无法启动,端口 443 冲突?

我在遵循标准安装说明的 Ubuntu 18.04 VPS 中安装了 Discourse。它已经运行了几年,但今天下午当我访问我的网站时,TLS 证书已过期——由于它使用 HSTS,这意味着我完全无法访问该网站。我想着很简单,SSH 进入服务器,安装更新(只是为了更新),运行 ./launcher rebuild app,然后它就会正常工作。

事实并非如此;我看到了一个“哎呀”页面。所以我决定重启系统,现在当我尝试浏览时,我看到一个 502 页面。我无法启动 app

root@talk:/var/discourse# ./launcher start app
x86_64 arch detected.

starting up existing container
+ /usr/bin/docker start app
Error response from daemon: driver failed programming external connectivity on endpoint app (e5db356e19c947c3e1e20a337aea7ee4bdcfa9bc5f3eac485e76439f3ed3a0e9): Bind for 0.0.0.0:443 failed: port is already allocated
Error: failed to start containers: app

确实有东西在监听 443 端口:

root@talk:/var/discourse# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      906/docker-proxy    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      427/systemd-resolve 
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      918/docker-proxy    
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      892/docker-proxy    
tcp6       0      0 :::9936                 :::*                    LISTEN      578/sshd            
udp        0      0 127.0.0.53:53           0.0.0.0:*                           427/systemd-resolve 

我感到很困惑——接下来应该检查什么?

3 个赞

你上次进行重建有多久了?有没有出现任何错误?它有没有提到升级 PostgreSQL?也许再重建一次。

2 个赞

您还可以检查是否有其他 Discourse 容器正在运行,例如 import。运行以下命令,并查看 status 和 ports 列,可以找到答案:

docker container ls
2 个赞

我一直在更新网站;我记得之前升级过 postgres,当时我已经处理了。我不记得这次有看到任何关于它的信息,但再运行一次重建也很容易。但在执行此操作时,我看到:

……果然 import 正在运行。所以我停止了它,一旦重建完成,网站就恢复了。

而且 Let’s Encrypt 证书已续订(似乎今天签发了好几个,这有点麻烦),所以现在一切都恢复正常了。感谢您的快速响应。

3 个赞

那么您想要。

  ./launcher destroy import
3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.