不幸的是,Tomcat 对 authbind 的使用没有记录,这使得在不以 root 身份运行时将 Tomcat 9 绑定到端口 80 是一个挑战。我在 Ubuntu 16.04 上尝试了以下操作:
1) 在 server.xml 中,将 <Connector> 中的属性端口更改为 80。
2)安装authbind。
3) 将 AUTHBIND=yes 添加到 setenv.sh
4) 创建文件 /etc/authbind/byport/80 具有 777 权限和所有者 tomcat。
如果我startup.sh以 root 身份运行,它工作正常。但是,如果我以非特权用户“tomcat”的身份执行此操作,脚本将显示“Tomcat 已启动”且没有错误消息。但是浏览器显示“无法连接”。
如果我运行authbind startup.sh,结果是一样的。启动脚本中缺少错误消息使我对问题的原因一无所知。
可能的相关信息:tomcat 是从 zip 文件安装的,而不是从 repo 安装的。
关于使这项工作起作用的技巧,我还有什么其他的事情吗?这在官方文档中严重缺失。
小智 7
从 zip 安装 Tomcat 是可以的。
我要求您按照以下步骤在 80 上配置 authbind 并运行 tomcat,我认为您已经安装了 authbind 和 tomcat 9。
触摸 /etc/authbind/byport/80; chmod 500 /etc/authbind/byport/80; chown tomcat9 /etc/authbind/byport/80
*将 tomcat9 视为 tomcat 的非 root 用户
CATALINA_OPTS="-Djava.net.preferIPv4Stack=true"
旧 : exec "$PRGDIR"/"$EXECUTABLE" start "$@
新:exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
在 80 上运行 tomcat 的另一种解决方案是使用 iptables。
须藤/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
如果您有任何疑问或疑问,请告诉我,我可以提供帮助。
谢谢,尼桑特
| 归档时间: |
|
| 查看次数: |
15319 次 |
| 最近记录: |