你好,
如标题所述,我已运行 sudo apt install apache2。
服务器无法启动,错误信息如下:
(98) 地址已在使用中:AH00072: make_sock: 无法绑定到地址 [::]:80
(98) 地址已在使用中:AH00072: make_sock: 无法绑定到地址 0.0.0.0:80
无可用监听套接字,正在关闭
AH00015: 无法打开日志
操作“start”失败。
Apache 错误日志可能包含更多信息。
pam_unix(sudo:session): 用户 root 的会话已关闭
控制进程已退出,code=exited status=1
apache2.service: 因结果 'exit-code' 失败。
启动 Apache HTTP 服务器失败。
如何解决?谢谢大家。
schleifer
(Andrew Schleifer)
2
该端口上已有其他程序在运行。您需要找到并停止它。
运行 netstat -an | grep :80 可能会显示具体是什么程序。
tcp6?这有点奇怪。
所以我应该把 apache2.conf 中的端口改成其他值吗?这会不会导致将来在这个 Web 服务器上运行的其他网站出现问题?
schleifer
(Andrew Schleifer)
4
抱歉,我漏了一个标志,使用 netstat -anp 来显示程序名称。
pfaffman
(Jay Pfaffman)
5
为什么?如果你安装了 Discourse,它已经占用了端口 80 和 443。
请参阅 如何在已有 Apache 站点的服务器上设置 Discourse
我试试这个,谢谢!
另外 @schleifer,它显示的是 30005/docker-proxy。
neounix
(Dark Matter)
7
既是也不是。让我们退一步看看这个问题。
之前,听起来你正在使用 Apache 运行多个网站。Apache 监听端口 80 和 443,然后将请求作为“虚拟主机”进行“代理”(重定向),因此你可以在同一台服务器上运行多个网站,它们都监听相同的端口(80 和 443)。这就是“LAMP 入门 101”……也就是虚拟主机的运作方式。
现在,假设你以官方开箱即用(OOTB)的方式安装 Discourse。OOTB 版本的 Discourse 会尝试绑定到相同的端口,但由于 Apache 已经在使用(绑定)这些端口,因此会失败。你有以下选择:
- 让 Discourse 运行在 Unix 域套接字上,并配置 Apache 将 Discourse 应用作为虚拟主机进行反向代理。
注意:我测试过这种方法,它是可行的;但这并未得到 Discourse 的官方(甚至非官方)支持。
- 从 Apache 迁移到 nginx,让所有 Web 服务器都通过 nginx 运行,并将 Discourse 应用作为虚拟主机进行反向代理,同时为 Discourse-docker 生产应用使用 Unix 域套接字。
注意:这也未得到 Discourse 的官方支持;大多数运行 Apache 网站的人会发现,将他们所有的 Apache2 mod_rewrite 和编码的 geo-ip mod 内容移植到 nginx 有点“棘手”;但这当然是可行的,特别是如果你的应用是为 nginx 和 Apache2 两者构建的(这样会更容易一些,但依然未获得官方支持)。
- 将 Discourse Docker 容器暴露在除 80 和 443 之外的其他端口上。
注意:这也不(真正)推荐(但据我回忆,这是官方支持的)。然而,大多数人不想通过输入端口号(如 https://my-great-discourse-app.org:3334)来访问 Web 应用,因此大多数人在生产环境中不会这样做。开发环境则是另一回事。
作为一个拥有大量 LAMP 经验且现在越来越多使用 Discourse 的人,在“不了解你所有具体情况”的前提下,我的建议是将它们运行在独立的服务器上(这得到了 Discourse 的官方支持);但如果你资金非常紧张,必须将所有服务运行在同一台服务器上(或者只是喜欢拥有一台大而复杂的服务器),那么你就需要学习如何配置 Apache2,使其通过 Unix 域套接字对 Discourse 应用进行反向代理。
我测试过这种方法,确实可以配置 Apache2 通过 Unix 域套接字对 Discourse 进行反向代理;但该方案并未获得官方(任何程度的)支持。
注意:关于使用 HAProxy 配置 Apache2 的链接,是我无法轻松使其生效的方案,因此我放弃了它(没必要只使用 HAProxy,还有“更老的方法”可以做到)。不过,你也许最好直接遵循这篇 Discourse 教程:
希望这能在某种程度上对你有所帮助,@nekodroid
Stephen
(Stephen)
8
在非标准端口上发布完全不受支持。我曾看到一些主题,网站所有者没有绑定到 socket,而是更改了端口并使用反向代理映射回 80/443,但如果最终结果需要 :port,则无法提供支持。