前提:
Tomcat需要Java运行时环境的支持,如果Java和Tomcat的环境变量都已经配置成功,启动后bash会打印相应的log,比如用到了哪个位置的jdk。
解决方案:
1、安全组策略是否开启,开启8080之后,默认情况下,输入公网IP:8080就可以访问。如果开启的是80端口,则需要修改conf/server.xml文件中的Connector标签中的port端口号,将其改为80端口,然后在浏览器中直接输入公网IP即可访问。
2、端口问题
查看当前端口情况

[root@iz2zehjjhi300kynwdk13iz bin]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      3592/java
tcp        7      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      3592/java
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2016/sshd

每次访问tomcat,可以看见tomcat是可以收到消息的Recv-Q标志,但是结果是访问不到tomcat主页的。并且,当关闭tomcat的时候,会抛出如下的异常:

Sep 15, 2020 3:20:02 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Could not contact localhost:8005. Tomcat may not be running.
Sep 15, 2020 3:20:02 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refusedat java.net.PlainSocketImpl.socketConnect(Native Method)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:589)at java.net.Socket.connect(Socket.java:538)at java.net.Socket.<init>(Socket.java:434)at java.net.Socket.<init>(Socket.java:211)at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:450)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:483)at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:400)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:487)

异常开头说明了8005端口并没有启用或者说没有被监听。
tomcat启动并且能够被外部所访问,必须开启的接口8080,8005,8009
参考了一些网上对于tomcat8005端口不能够启动的帖子,解决方案就是修改/jre/lib/security/java.security文件中 securerandom.source 配置项:
将原本的:securerandom.source=file:/dev/random
修改为: securerandom.source=file:/dev/urandom
然后再次启动tomcat,这时候就可以在控制台看到8005端口启用了,并且tomcat也能够正常的关闭,外部也能够很快的进行访问。

Tomcat started.
[root@iz2zehjjhi300kynwdk13iz bin]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      3756/java
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      3756/java
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2016/sshd
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      3756/java

tomcat端口介绍:

  • 8005端口:关闭TOMCAT服务的端口。

  • 8009端口:负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。

  • 8080端口:连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器

Tomcat端口分配表 端口号
关闭指令端口 8005
http端口 8080
https端口 8443
Ajp端口 8009

8005端口只是一个关闭tomcat的端口,为什么当没有启用的时候,tomcat无法访问,以下均为个人见解,如有错误,一定不吝指教。查看server.xml文件,所有的标签都是包含在<Server port="8005" shutdown="SHUTDOWN">...</Server>这个标签下的,里面又监听器、连接器、主机、引擎等相关的配置,所以说8005端口可以看做是一个总阀,在它运转异常的情况下,其他组件也就不能正常的运转。


<Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><!-- Security listener. Documentation at /docs/config/listeners.html<Listener className="org.apache.catalina.security.SecurityListener" />--><!--APR library loader. Documentation at /docs/apr.html --><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><!-- Prevent memory leaks due to use of particular java/javax APIs--><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /><!-- Global JNDI resourcesDocumentation at /docs/jndi-resources-howto.html--><GlobalNamingResources><!-- Editable user database that can also be used byUserDatabaseRealm to authenticate users--><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><!-- A "Service" is a collection of one or more "Connectors" that sharea single "Container" Note:  A "Service" is not itself a "Container",so you may not define subcomponents such as "Valves" at this level.Documentation at /docs/config/service.html--><Service name="Catalina"><!--The connectors can use a shared executor, you can define one or more named thread pools--><!--<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/>--><!-- A "Connector" represents an endpoint by which requests are receivedand responses are returned. Documentation at :Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)Java AJP  Connector: /docs/config/ajp.htmlAPR (HTTP/AJP) Connector: /docs/apr.htmlDefine a non-SSL/TLS HTTP/1.1 Connector on port 8080--><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!-- A "Connector" using the shared thread pool--><!--<Connector executor="tomcatThreadPool"port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />--><!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443This connector uses the NIO implementation that requires the JSSEstyle configuration. When using the APR/native implementation, theOpenSSL style configuration is required as described in the APR/nativedocumentation --><!--<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" />--><!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><!-- An Engine represents the entry point (within Catalina) that processesevery request.  The Engine implementation for Tomcat stand aloneanalyzes the HTTP headers included with the request, and passes themon to the appropriate Host (virtual host).Documentation at /docs/config/engine.html --><!-- You should set jvmRoute to support load-balancing via AJP ie :<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">--><Engine name="Catalina" defaultHost="localhost"><!--For clustering, please take a look at documentation at:/docs/cluster-howto.html  (simple how to)/docs/config/cluster.html (reference documentation) --><!--<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>--><!-- Use the LockOutRealm to prevent attempts to guess user passwordsvia a brute-force attack --><Realm className="org.apache.catalina.realm.LockOutRealm"><!-- This Realm uses the UserDatabase configured in the global JNDIresources under the key "UserDatabase".  Any editsthat are performed against this UserDatabase are immediatelyavailable for use by the Realm.  --><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: The pattern used is equivalent to using pattern="common" --><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host></Engine></Service>
</Server>

8005端口导致的阿里云上的tomcat无法外部访问相关推荐

  1. 如何在阿里云上配置安全规则用于开放3CX所需的端口?

    原文链接:https://3x.58voip.com/how-to-set-aliyun-port-for-3cx/ 背景: 3CX是一款基于X64的WINDOWS和LINUX-Debian的软件.它 ...

  2. 阿里云-默认封禁TCP 25端口出方向的访问流量,即您无法在阿里云上的云服务器通过TCP 25端口连接外部地址。

    TCP 25端口解封申请 本页目录 背景信息 操作步骤 出于安全考虑,阿里云默认封禁TCP 25端口出方向的访问流量,即您无法在阿里云上的云服务器通过TCP 25端口连接外部地址. 背景信息 TCP ...

  3. 在阿里云上部署生产级别Kubernetes集群

    阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群. 本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级 ...

  4. 基于阿里云上实现全站https

    http://www.zhuxiaodong.net/2016/how-to-switch-your-website-to-https-on-aliyun-part1/ 一些重要的互联网资源参考: 强 ...

  5. 如何在阿里云上搭建个人网站(学习记录)

    如何在阿里云上搭建个人网站(学习记录) 第一次写博客记录学习的过程,不仅可以巩固学习知识,也方便日后复习.并且可以记录自己的成长. 先购买阿里ECS云服务器 购买网站https://promotion ...

  6. Oracle APEX 系列文章3:在阿里云上打造属于你自己的APEX完整开发环境 (安装CentOS, Tomcat, Nginx)

    本文是钢哥的Oracle APEX系列文章中的第三篇,完整 Oracle APEX 系列文章如下: - Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技 - Or ...

  7. 在阿里云上打造属于你自己的APEX完整开发环境 (安装CentOS, Tomcat, Nginx)

    2019独角兽企业重金招聘Python工程师标准>>> Oracle APEX 系列文章3:在阿里云上打造属于你自己的APEX完整开发环境 (安装CentOS, Tomcat, Ng ...

  8. Oracle APEX 系列文章3:在阿里云上打造属于你自己的APEX完整开发环境 (安装CentOS, Tomcat, Nginx)...

    本文是钢哥的Oracle APEX系列文章中的第三篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技 Oracle ...

  9. 在阿里云上安装arch Linux

    在阿里云服务器上面安装archLinux 前言:之前在阿里云服务器上面安装的centOS7停止了维护,软件都停留在2021年的版本,着实不方便,虽然是服务器,我也没有挂载什么云服务载阿里云上,不追求什 ...

最新文章

  1. 【c语言】蓝桥杯基础练习 特殊回文数
  2. python代码示例百度云-python利用百度云接口实现车牌识别的示例
  3. SPOJ - DISUBSTR Distinct Substrings(后缀数组)
  4. CSS3-新增属性选择器
  5. api 微信内置浏览器js_微信小程序和HTML的区别
  6. 如何做漂亮实用的UI界面?UI/UX设计模板,帮你入手!
  7. 目标检测——数据增强的学习笔记
  8. 1015. 德才论 (25)-PAT乙级真题
  9. Zookepper(2015.08.16笔记)
  10. python编写简单运动会管理系统
  11. markdown 设置目录跳转的简单方法
  12. 简明 s3cmd 安装与使用手册
  13. canvas火焰效果
  14. 深度学习训练数据打标签过程
  15. 宝塔面板计划任务每日重启服务器
  16. 记录重新安装微软商店过程
  17. LeetCode栈和队列练习
  18. linux显示点阵字体,使用文泉驿点阵字体解决Linux中文化问题
  19. Mongdb重启后dirty很高,cache打满
  20. 编程中无穷大的设定 很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1 但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相

热门文章

  1. Connected to the target VM, address:XXXX, transport: socket
  2. oracle账号分享
  3. ABAP 类、接口、事件
  4. JAVA 接口Interface练习②
  5. 读锁(共享锁)写锁(独占锁)解析
  6. JS相关笔记---DAY2(逻辑运算,判断,循环以及demo,在输出方面和C,java有很大不同!)
  7. JQ----移动端h5页面通过地址调起通讯录以及高德地图、百度地图定位导航
  8. r7000搭建php,新装NETGEAR R7000之折腾的最终完美结局
  9. 如何用python给自己的孩子取一个名字?
  10. online learning的介绍