Ubuntu作为服务器其tomcat被远程访问问题

根据我的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的环境变量。
Ubuntu作为服务器其tomcat被远程访问问题_第1张图片

#配置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/
Ubuntu作为服务器其tomcat被远程访问问题_第2张图片
tomcat主页面终于出来了。

你可能感兴趣的:(Linux,linux,tomcat,路由器)