如何将Tomcat的端口从8080更改为80?


Answers:


215

1)转到conftomcat安装目录中的文件夹

 e.g. C:\Tomcat 6.0\conf\

2)在文件中编辑以下标签server.xml

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

3)将port=8080值更改为port=80

4)保存文件。

5)停止Tomcat并重新启动。


14
另外,请确保停止并重新启动Tomcat。只是说。:)
AllieCat 2013年

3
我这样做了,但出现404错误!我还有什么需要做的吗?
土星

15
etc/default/tomcat7设置AUTHBIND=yes,以避免端口80上PermissionDenied错误
马库斯Pscheidt

1
请参阅Rose对于Linux环境的回答!
Marko 2015年

该答案缺少/ etc / authbind信息,请参见下文Rose的答案
jorfus

119

Amazon EC2中的Ubuntu 14.04 LTS。 以下步骤为我解决了此问题:

1.编辑server.xml并将port =“ 8080”更改为“ 80”

sudo vi /var/lib/tomcat7/conf/server.xml

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

2.编辑tomcat7文件(如果未创建该文件,则需要创建它)

sudo vi /etc/default/tomcat7

取消注释并将#AUTHBIND = no更改为yes

3.安装authbind

sudo apt-get install authbind

4.运行以下命令以在端口80上提供tomcat7读取+执行。

sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown tomcat7 /etc/authbind/byport/80

5.重新启动tomcat:

sudo /etc/init.d/tomcat7 restart

1
那一个有效。Linux人士,至少对我来说适用于Ubuntu 14.04.2 LTS。
Rodrigo Gurgel

3
自动绑定是正确的答案。但是请注意,如果您正在使用“ sudo startup.sh”,则可以跳过自动绑定,因为端口80将被授予升级的用户。
Marcio Jasinski

1
谢谢!!我知道要在服务器配置中启用authbind,但不知道我必须在authbind中为注册端口创建文件!我希望OP更改了对此答案的可接受解决方案!(我发现您回答:P的时间将近3年)
Fr0zenFyr

1
它可以与Lubuntu 18.0.4上的Tomcat 9一起使用,而无需安装authbind,仅添加设置。
Marco Sulla,

107

在基于Linux的Debian(包括Ubuntu)上,您还必须转至/etc/default/tomcat7,取消注释#AUTHBIND=no行并将其值设置为'yes',以使服务器绑定到特权端口。


2
你好我没有特定的文件
nmkyuppie

什么版本的tomcat?您在什么操作系统上?
先锋天空

7
如果由zip / tar.gz安装,则不适用于Tomcat,因为它们不在/ etc / defaults /中创建文件。
Gorkamorka 2014年

9
上面的路径应该是:/ etc / default / tomcat7(请注意默认情况下缺少“ s”)
Tristan Reid

1
Tomcat 9等于什么?
katu

29

在Ubuntu和Debian系统上,需要执行几个步骤:

  1. 在server.xml中,更改线路<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>port="80"

  2. 使用以下命令安装推荐的(不是必需的)authbind软件包:

    sudo apt-get install authbind

  3. 通过取消注释和设置以下行来启用server.xml文件(/etc/tomcat6或中的/etc/tomcat7)中的authbind :

    AUTHBIND=yes

这三个步骤都是必需的。


5
在13.10中不适用于Tomcat(如果由zip / tar.gz安装)。
Gorkamorka 2014年

4
要使其从zip / tar.gz运行,请执行上述步骤1和2,将AUTHBIND = yes添加到bin / setenv.sh(如果不存在则创建),然后从root开始。与LTS 12.04一起使用时,在w / 13.10上也可以使用。
karl 2014年

就我而言,它没有authbind包就失败了(在catalina.out中没有错误信息),安装后就可以工作了
golimar 2014年

您能否指向有关AUTHBIND = yes的文档?我找不到它。
ARX

我在TOMCAT文档中也找不到作为服务器元素配置的一部分提及AUTHBIND设置的信息。奇怪。
Peter N. Steinmetz

22

我尝试将端口从更改808080server.xml但对我没有用。然后我找到了替代方法,请更新iptables它,我确定会对性能产生影响。

我使用以下命令:

sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo /sbin/service iptables save

http://www.excelsior-usa.com/articles/tomcat-amazon-ec2-advanced.html#port80


如何还原呢?
SAI GIRI CHARY AOUSULA

运行以下命令以删除路由:iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
casol

17

由于以前的答案在14.04 Ubuntu Server上对我来说效果不佳(虽然不错,但还不够),所以我提到了这些建议(这是引号)。

编辑:请注意,正如@ jason-faust 在14.04authbind的注释中提到的那样,它附带软件包现在确实支持IPv6,因此不再需要首选IPv4了

1) Install authbind
2) Make port 80 available to authbind (you need to be root):

  touch /etc/authbind/byport/80
  chmod 500 /etc/authbind/byport/80
  chown tomcat7 /etc/authbind/byport/80

3) Make IPv4 the default (authbind does not currently support IPv6).
   To do so, create the file TOMCAT/bin/setenv.sh with the following content: 

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

4) Change /usr/share/tomcat7/bin/startup.sh

  exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
  # OLD: exec "$PRGDIR"/"$EXECUTABLE" start "$@"

如果您已经有了附带的setenv.sh文件,则必须使用:/usr/share/tomcat7/binCATALINA_OPTS

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

现在,您可以将端口更改80为其他答案中所述。


2
我要补充一点,startup.sh文件位于:/usr/share/tomcat7/bin/startup.sh-对我们的新手来说,这并不完全明显;)
ConMan 2014年

@ConMan更新了路径,这是保存其他搜索的好主意。我承认一开始并不了解这个地方。
smonff

1
谢谢,这很好用,我已经习惯了centos,所以这对我有帮助,因为这对我来说不是问题。
med116

1
我今天刚在14.04上关注此问题,它随附的authbind软件包现在支持IPv6,因此不再需要首选IPv4。
杰森·福斯特

我也做了:chmod 755 /usr/share/tomcat7/bin/setenv.sh
Casey Harrils

5

在现代linux上,最好的方法(对我而言)是使用xinetd:

1)创建/etc/xinet.d/tomcat-http

service http
{
        disable = no
        socket_type = stream
        user = root
        wait = no
        redirect = 127.0.0.1 8080
}

2)创建/etc/xinet.d/tomcat-https

service https
{
        disable = no
        socket_type = stream
        user = root
        wait = no
        redirect = 127.0.0.1 8443
}

3)在chkconfig xinetd上

4)/etc/init.d/xinetd启动


另一种方法是编译和使用jsvc,但xinetd肯定更容易
cgdave 2014年

5

如果有人在寻找,请按照以下步骤在Eclipse IDE用户中更改tomcat端口号。

1.在“服务器”视图中,双击服务器名称: 在此处输入图片说明

2.这将打开Tomcat的配置页面,如下所示: 在此处输入图片说明

3.请注意,端口号显示在右表中。单击以进行编辑,例如: 在此处输入图片说明

4.这会将HTTP的端口号从8080更改为80。按Ctrl + S保存更改并重新启动服务器。我们可以在“控制台”视图中发现端口号的更改: 在此处输入图片说明

所有这些内容均来自下面的链接,谢谢,请参考该链接以获取更多信息。 http://www.codejava.net/servers/tomcat/how-to-change-port-numbers-for-tomcat-in-eclipse


4

运行以下命令即可。尝试更改server.xml和conf文件,但均无法正常工作。

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

/sbin/iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

3

在Linux服务器上,您只需使用以下命令即可将Tomcat重新配置为侦听端口80:

sed -i 's|port="8080"|port="80"|g' /etc/tomcat?/server.xml
sed -i 's|#AUTHBIND=no|AUTHBIND=yes|g' /etc/default/tomcat?
service tomcat8 restart

2

如果您使用的是eclipse并且修改server.xml不适合您,请尝试以下文章 ..如果您使用的是类似eclipse的IDE,则它们具有修改端口的步骤。


1

只是tomcat的conf文件夹

打开server.xml文件

转到连接器节点之一,如下所示

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

只需更改端口

保存并重启tomcat


1
仅在Windows上不是吗?
smonff 2014年

1

步骤如下:

->遵循路径:{tomcat目录> / conf->查找此行:

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

将端口号从“ 8080”更改为“ 80”。

->保存文件。

->重新启动服务器:)


0

不要忘记编辑文件。打开文件/etc/default/tomcat7并更改

#AUTHBIND=no

AUTHBIND=yes

然后重新启动。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.