我知道在端口 80 上运行 tomcat 会产生什么影响,但我需要一个快速解决方案。我正在尝试遵循此教程。我按照教程做了两处更改:
- tomcat6 是 tomcat 运行的用户名
- tomcat conf文件的位置:
/usr/share/tomcat6/bin/catalina.sh
但我仍然收到权限错误。Java 说它无法绑定到端口 80。我还应该做什么?我还应该提供哪些信息供人们调试?只是为了确认,端口 80 上没有其他程序在运行
答案1
/etc/default/tomcat6
您可以按如下方式将 AUTOBIND 属性更改为“yes”:
AUTHBIND=yes
重新启动 tomcat,这样你就可以使用可用的特权端口 (1-1023)。
答案2
有两种不同的方法可以做到这一点,而无需实际触及 tomcat 配置。
您可以制作一个 iptables 脚本,将流量从端口 80 重定向到端口 8080(这样您就不需要摆弄 tomcat 设置了)
对于 iptables
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80
就可以了!(编写一个脚本,让它在 uppstart 上自动完成)
或者您可以创建一个 Apache 反向代理,实际上通过它代理与您的 tomcatserver 的连接(这很好,因为它实际上可以缓存请求并加快您的连接速度)
答案3
在 Tomcat HTTP 连接器中,确保端口 80 上的连接器绑定到所有接口或 0.0.0.0 ,而不仅仅是 127.1 。这也许可以解释为什么你无法使用如下 URL 进行连接 http://10.0.0.2:80 但你可以 http://127.1:80
答案4
使用 authbind 启动 tomcat 服务,这将允许用户启动小于 1024 的端口,我们不需要重定向或 iptables。
apt-get 安装 authbind -y
安装 Authbind 软件
chmod -R 755 /etc/authbind
group 应该是用户组。
chown -Rh root:组/etc/authbind
之后运行以下命令
cd /etc/authbind/byuid
举个例子,假设用户 ID 是 2000,您可以使用您的用户 ID 号
回显‘0.0.0.0/0:1,1023’> 2000
该文件应归用户和组所有。
chown :2000
修改权限 700 2000
在 tomcat 启动文件 $CATALINA_BASE/startup.sh 中添加以下行
export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
使用 Authbind service startup.sh 启动 tomcat
评论以下行
#$CATALINA_HOME/bin/startup.sh
添加 This End 作为文件结尾
AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh
现在您应该能够以少于 1024 个端口的用户身份启动 tomcat 服务。