我最近卸载了 apache2,这样我就可以直接在端口 80 上运行 Tomcat6。我一直在绞尽脑汁尝试正确设置它。
我读了这个帖子关于设置 tomcat 以使用 authbind。我尝试了该方法,但没有在 catalina.out 中收到堆栈跟踪错误,而是在启动时收到 [fail] 响应,而没有输出到日志中。
我尝试将 tomcat 直接绑定到我的服务器的 IP 地址,然后编辑 /etc/authbind/byuid/ 以包含该 IP 地址,如在此处输入链接描述,但启动时再次出现 [失败] 响应,且没有任何日志记录。
让 tomcat 在端口 80 上成功启动的唯一方法是作为 root 身份运行它,但我不想这样做。
使用 authbind 在端口 80 上运行 tomcat6 的正确配置是什么?
答案1
如果我运行任何需要提供某些网页的 java 服务器,我通常会使用 mod_proxy 并让 apache 提供服务。这样我的 linux 服务器就变得更加多功能,因为端口 80 由更能接受语言的应用程序服务器控制。
一般来说,我使用 apache/mod_proxy 在 80 上代理到 8800(或某个高端口)为 Java 站点提供服务,jboss 在 8800 上运行,并且 iptables 配置为拒绝对 8800 的外部请求。
答案2
您确定您的配置完全正常工作吗?如果绑定失败,那么它应该仍可启动,只是缺少某些侦听器。尝试将您的侦听器重新设置为 0.0.0.0:8080,看看它是否仍在启动。
一旦你到了这一步,试试这个:
将您的监听器更改为端口 80(将其设置为特定地址不会有帮助,因此将其保留在 0.0.0.0 就可以了)。
修改
/etc/default/tomcat6
以启用 authbind。
运行以下命令:
sudo apt-get install authbind
sudo touch /etc/authbind/byport/80
sudo chown tomcat6:tomcat6 /etc/authbind/byport/80
答案3
如果你已经在主机上运行了防火墙(我假设你已经绑定到 80),你可以尝试使用 iptables 将流量从 80 重新路由到 8080:
sudo /sbin/iptables -t nat -I PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080