根据我的Linux版本tomcat下载及安装安装好tomcat之后,但是还不能直接访问我 ubuntu 服务器的公网 ip, 即http://xxx.xxx.xxx.xxx:8080访问不到 Apache tomcat主页,还需要进行配置。
一、在路由器管理页面配置转发规则
如果你和我一样,服务器在局域网,但是需要用另一台非同一局域网下的主机访问,就需要在服务器上做这个步骤。将服务器局域网的端口映射到公网。
服务端口 | 内部端口 | 内网Ip地址 | 协议 | 状态 |
---|---|---|---|---|
1080 | 22 | 192.168.0.xxx | TCP | 生效 |
8080 | 8080 | 192.168.0.xxx | TCP | 生效 |
80 | 80 | 192.168.0.xxx | TCP | 生效 |
我将我内网的22端口映射到公网ip的1080端口,8080端口就映射到8080,80端口亦如此。
二、修改tomcat的server.xml
这部分我是根据下面两篇文章来修改的。
参考文章1:搭建tomcat服务器,目标可通过外网ip访问本机
参考文章2:
外网访问Ubuntu下的Tomcat
1、修改tomcat目录下的/conf/server.xml文件
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
将port字段修改为一个开放端口,你也可以改成80,这样在访问时就不用加端口号了,但是要记得开放80端口。我还是使用的8080。
一定要确保该端口是开放的
。
端口的开放参考下文:
Ubuntu系统中防火墙的使用和开放端口
我使用的命令有:
查看防火墙的状态
#sudo ufw status开启防火墙
#sudo ufw enable关闭防火墙
#sudo ufw disable指定开放8080的tcp协议
#sudo ufw allow 8080/tcp指定关闭8080的tcp协议
#sudo ufw deny 8080/tcp //普通端口不加后面的斜杠和协议即可重启防火墙,使配置生效
#sudo ufw reload
2、修改tomcat/conf/server.xml文件
<Engine name="Catalina" defaultHost="localhost"><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">
同一局域网下:局域网将localhost改为你的IP地址,ubuntu下可以使用ifconfig查看
非同一局域网:首先你要确定你有一个外网ip地址。如果你分配到的是一个局域网IP地址需要经过一系列的转换为外网ip地址,ubuntu下可以使用curl cip.cc查看。将两个localhost改为你的公网ip。
一般到这里tomcat的启动好像大部分就可以了,但是我没有,我启动tomcat正常,但是关闭时报/usr/environment/java/jdk1.8.0_281/jre /bin/java: not found,这时我只知道我环境变量肯定存在问题。
三、其他可能需要的操作
3、打开apache-tomcat-9.0.44/bin中的startup.sh、shutdown.sh文件进行配置
将自己的java环境变量复制到这个位置,以及Tomcat的环境变量。
#配置java环境
export JAVA_HOME=/usr/environment/java/jdk1.8.0_281
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib??
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
#配置tomcat
export TOMCAT_HOME=/usr/environment/tomcat/apache-tomcat-9.0.44
参考文章:
Ubuntu16.04安装配置tomcat及windows无法访问解决方案
4、在tomcat的配置文件 service.xml加上 address=“0.0.0.0”
localhost可以访问,127.0.0.1和本地IP无法访问
<Connector address="0.0.0.0" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />
5、如果你的tomcat启动时正常,但是执行./shutdown.sh时报错
一是看命令行窗口错误信息,二是看tomcat目录中logs文件夹下的catalina.sh中的错误日志,内容是一致的。我当时到这里都没有解决,然后仔细看错误信息。
/usr/environment/java/jdk1.8.0_281/jre /bin/java: not found
去该目录下查找java文件,是可以找到的,所以确定是java环境变量
的问题,jre后面多了两个空格,那么在我所有与java环境变量有关的配置文件中,都去检查修改了一遍。将jre与下一行export之间的两个空格去掉,最后成功了。
export JAVA_HOME=/usr/environment/java/jdk1.8.0_281
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin:$JRE_HOME/bin
在本地windows主机下访问:
http://113.54.xxx.xxx:8080/
tomcat主页面终于出来了。