我正在建立一台 TeamCity 服务器,它在 Amazon EC2 上运行它自己的嵌入式 Tomcat 实例。
我已成功让实例在端口 8111 或 8080 上响应,但是当我尝试将端口更改为 80 时,我无法让它在该端口上响应。
我已将安全组设置为允许端口 80,并验证这不是问题。
我的 Linux 实例上没有运行任何其他东西,只有 TeamCity 发行版,所以我没有 apache 服务器或任何正在运行的东西。
我觉得奇怪的是,当我在 8111 或 8080 上运行它,然后执行 netstat 时,我可以看到这些端口正在被监听,但是当我将端口设置为 80 并运行另一个 netstat 端口 80 时,它从未显示为正在被监听。
有人知道为什么我无法让 tomcat 响应端口 80 吗?
答案1
对于 Amazon EC2 Basic Linux 实例,端口 1-1023 是享有特权的,因此当我尝试以非 root 用户身份启动 teamcity 时,它崩溃了,因为我试图访问一个享有特权的端口。
它概述了两种解决方案:
- 以 root 用户身份启动 teamcity
- 使用 jsvc 将 teamcity 作为服务运行
答案2
它可能已被其他进程使用。您应该运行
netstat -anc | grep 80
以 root 身份找出哪个进程在该端口上有一个 LISTEN 套接字。