在 Linux 以非 root 用户将 Tomcat 运行在 80 端口上

1. 概述

默认情况下,Apache Tomcat 运行在 8080 端口上。并且不能使用1024以下的端口

在这篇文章中将介绍如何更改 Apache Tomcat 服务器的 HTTP 端口为80。

2. Apache Tomcat 配置

此过程的第一步是修改 Apache Tomcat 配置。

首先,我们找到服务器的 <TOMCAT_HOME>/conf/server.xml 文件。然后找到配置 HTTP 连接器端口的那一行:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

修改端口号为80

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

3. 更改 Linux 系统

在 Linux 系统中,低于 1024 的端口号属于特权端口,专供以 root 身份运行的程序使用。

如果我们有 root 或 sudo 访问权限,就可以使用以下命令以 root 身份启动 Tomcat 进程:

$ sudo startup.sh

如果修改了 Tomcat 的绑定端口为80,但是我们又没有使用 root 权限启动 Tomcat,Tomcat 就会启动失败,并收到类似以下错误提示:

java.net.BindException: Permission denied (Bind failed) <null>:80

为了解决这个错误,我们必须安装和配置 authbind,如下所述。

注意:使用非特权端口(1024 或更高),或者接受以 root 权限启动 Tomcat,可以跳过剩余部分,直接启动/重启服务器。

3.1. 安装 Authbind

在 Linux 系统(Debian/Ubuntu)上我们可以下载并安装 authbind 软件包:

$ sudo apt-get install authbind

3.2. 启用端口的读取和执行权限

现在我们需要执行几条命令来启用端口的读取和执行权限。

下面是一个使用 Tomcat 9.x 版本的示例:

$ sudo touch /etc/authbind/byport/80
$ sudo chmod 500 /etc/authbind/byport/80
$ sudo chown <user> /etc/authbind/byport/80

需要替换上面命令中的 为实际运行 Tomcat 的用户名称。

对于原本使用非 root 权限运行高于1024端口的 Tomcat,可以在修改端口之前通过 ps -ef | grep java 来确定运行 Tomcat 的用户名。

3.3. 在 Apache Tomcat 上启用 authbind

修改 Tomcat 配置文件,以便在 Tomcat 启动时使用 authbind。打开 <TOMCAT_HOME>/bin/startup.sh 文件,替换下面一行:

exec "$PRGDIR"/"$EXECUTABLE" start "$@"

替换为

exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"

3.4. 如果使用旧版本的 authbind

如果使用不支持 IPv6 的旧版 authbind(版本低于 2.0.0),我们需要将 IPv4 设置为默认值。因此,我们需要修改(如果没有就创建) <TOMCAT_HOME>/bin/setenv.sh 文件,并添加以下选项:

export CATALINA_OPTS="$CATALINA_OPTS -Djava.net.preferIPv4Stack=true"

4. 重启服务器

现在,我们完成了所有配置,可以启动或重启 Tomcat 服务器,并通过 80 端口进行访问。

5. 总结

本文中,展示了如何在非 root 用户下将 Apache Tomcat 的端口从默认的 8080 更改为端口 80。该配置方法对 Tomcat 6.x、7.x 和 8.x 版本同样有效。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

markvivv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值