此文章只说明如何打开80端口具体原理方面这里不做过多探讨。

在ubuntu10以后的版本 ubuntu 禁用了普通用户使用1-1024端口。这样当我们直接更改tomcat的server.xml 中的端口是不能正常启用80端口的。在catalina.out 里我们会发现以下错误信息。

SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"]

SEVERE: Failed to initialize connector [Connector[HTTP/1.1-80]]

最简单的理解就是tomcat没有正常的打开80端口。

我们可以通过以下方法打开

一、首先我们要通过 AUTHBIND 给普通用户使用80端口的一个权限。

    命令如下

    touch /etc/authbind/byport/80

    chmod 500 /etc/authbind/byport/80 

    chown tomcat7 /etc/authbind/byport/80

    (我这里运行tomcat的用户是tomcat7如果是其它用户请自行更改)

这样就给tomcat7这个普通用户使用80端口的权限。


二、然后我们再修改tomcat的相关配置文件

1、修改/etc/tomcat7/server.xml中的端口

    将原来的 Connector port="8080" protocol="HTTP/1.1" 这里的端口改为80

     Connector port="80" protocol="HTTP/1.1" 

2、修改/etc/default/tomcat7 文件中的AUTHBIND选项。

    一般情况下这个选项是注释掉的而且它在最后一行。

    将#AUTHBIND=no 改为 AUTHBIND=yes

如果不出以外就可以正常使用80端口了。


注:出现这种情况首先是我们通过apt 这种方式安装tomcat时会出现无法使用80端口的情况。

  如果是直接解压的tomcat二进制包并且用root用户启动服务则不会出现80端口无法打开的情况(这种情况以经测试过可以正常使用80)。

  要是觉得以上面方法比较麻烦,也可以将/etc/default/tomcat7配置文件中的用户和组改为root也可以正常打开80端口。毕竟root权限太大不建议使用此方法。

  个人并不推荐tomcat直接使用80端口,推荐使用apache或nginx做反向代理的方式。