一、下载tomcat
打开tomcat下载页面,tomcat10下载页面:
如果你 不想做代码的迁移工作,可以选择Tomcat9及其以下的版本。我们这里是为了安装Tomcat,选择Tomcat9作为演示的版本。
二、解压
将下载好的Tomcat上传到指定目录,并解压:
tar -zxvf apache-tomcat-9.0.58.tar.gz
打开对应目录如下图:
三、配置jdk环境变量
# 编辑配置文件
vim /etc/profile
# 输入命令,配置jdk环境变量
export JAVA_HOME=/opt/java/jdk-11
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
按ESC,然后输入 :wq! 然后输入回车,保存修改的文件。再输入命令使刚才的修改立即生效:
# 使修改立即生效
source /etc/profile
检查jdk配置是否成功:
# 检查jdk版本
java -version
显示如下内容,代表java环境变量配置成功:
[root@Cent0S8-FTP apache-tomcat-9.0.58]# java -version
openjdk version "1.7.0_75"
OpenJDK Runtime Environment (build 1.7.0_75-b13)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
如果没有生效,检查是否修改的配置文件是否粗心导致打错字了,或者将你的终端窗口重新打开即可。
四、配置Tomcat环境变量
# 配置Tomcat环境变量
export CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.58
export PATH=$PATH:$CATALINA_HOME/bin
五、启动Tomcat
在tomcat安装目录下的conf目录下,找到startup.sh脚本并启动:
我们看到了“Tomcat started”字样,大致代表着Tomcat已经启动了。至于是否成功,我们下面来检测。
六、检测Tomcat启动结果
1.检查java进程是否存在
ps -ef | grep java
结果如下:
2.查询端口是否有进程守护
netstat -anp | grep 8080
竟然没有任何结果。
3.关于防火墙:
#停止firewall
systemctl stop firewalld.service
#开启firewall
systemctl start firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#查看默认防火墙状态(关闭后显示not running,开启后显示running)
firewall-cmd --state
开启的时候,可能报这个错:
Failed to start firewalld.service: Unit firewalld.service is masked.
可以使用一下命令尝试:
systemctl unmask firewalld.service
这部分参考:Linux安装tomcat,配置环境变量
我们查看防火墙列表:
firewall-cmd --zone=public --list-ports
如果我们重新添加8080端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
说明8080已经开通防火墙。
但是我们本地访问127.0.0.1:8080:
这就很尴尬了。想了各种办法都没有解决问题,最后想到了日志。我们到logs目录下找到 catalina.out文件:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
我们可以隐约看到“不支持的类版本错误”,去了解一下之后发现:
报错的原因是JDK版本跟不上。
也就是说jdk版本太低了。这也难怪,我这个jdk版本是1.7,之前是为了在Jboss上试验一个东西,配置成了1.7,现在改成最高的jdk17。
七、重启Tomcat
修改jdk环境变量后,重启Tomcat,即运行Tomcat的bin目录下的startup.sh脚本:
sh startup.sh
# 或者
./startup.sh
启动后:
[root@Cent0S8-FTP logs]# ../bin/startup.sh
Using CATALINA_BASE: /opt/tomcat/apache-tomcat-9.0.58
Using CATALINA_HOME: /opt/tomcat/apache-tomcat-9.0.58
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-9.0.58/temp
Using JRE_HOME: /opt/java/jdk-17.0.2
Using CLASSPATH: /opt/tomcat/apache-tomcat-9.0.58/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-9.0.58/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
查看8080端口网络情况:
netstat -anp | grep 8080
[root@Cent0S8-FTP logs]# netstat -anp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 932458/java
发现还是之前的错误。
查看日志: catalina.out
java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-Feb-2022 01:06:45.131 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.58
04-Feb-2022 01:06:45.137 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Jan 15 2022 14:37:38 UTC
04-Feb-2022 01:06:45.137 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.58.0
04-Feb-2022 01:06:45.137 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Linux
04-Feb-2022 01:06:45.137 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 4.18.0-348.2.1.el8_5.x86_64
04-Feb-2022 01:06:45.137 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
04-Feb-2022 01:06:45.138 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: /opt/java/jdk-17.0.2
04-Feb-2022 01:06:45.138 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 17.0.2+8-LTS-86
04-Feb-2022 01:06:45.138 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation
04-Feb-2022 01:06:45.138 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /opt/tomcat/apache-tomcat-9.0.58
04-Feb-2022 01:06:45.138 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /opt/tomcat/apache-tomcat-9.0.58
04-Feb-2022 01:06:45.152 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
04-Feb-2022 01:06:45.153 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
04-Feb-2022 01:06:45.153 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
04-Feb-2022 01:06:45.153 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
04-Feb-2022 01:06:45.153 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-Feb-2022 01:06:45.153 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=/opt/tomcat/apache-tomcat-9.0.58/conf/logging.properties
04-Feb-2022 01:06:45.153 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
04-Feb-2022 01:06:45.153 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djdk.tls.ephemeralDHKeySize=2048
04-Feb-2022 01:06:45.154 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
04-Feb-2022 01:06:45.154 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
04-Feb-2022 01:06:45.154 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dignore.endorsed.dirs=
04-Feb-2022 01:06:45.154 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=/opt/tomcat/apache-tomcat-9.0.58
04-Feb-2022 01:06:45.154 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=/opt/tomcat/apache-tomcat-9.0.58
04-Feb-2022 01:06:45.154 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=/opt/tomcat/apache-tomcat-9.0.58/temp
04-Feb-2022 01:06:45.156 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能
04-Feb-2022 01:06:45.496 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
04-Feb-2022 01:06:45.523 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[798]毫秒内初始化
04-Feb-2022 01:06:45.566 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
04-Feb-2022 01:06:45.567 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.58]
04-Feb-2022 01:06:45.576 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/ROOT]
04-Feb-2022 01:06:45.955 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/ROOT]的部署已在[376]毫秒内完成
04-Feb-2022 01:06:45.956 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/manager]
04-Feb-2022 01:06:45.995 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/manager]的部署已在[39]毫秒内完成
04-Feb-2022 01:06:45.995 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/docs]
04-Feb-2022 01:06:46.127 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/docs]的部署已在[132]毫秒内完成
04-Feb-2022 01:06:46.128 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/examples]
04-Feb-2022 01:06:46.352 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/examples]的部署已在[224]毫秒内完成
04-Feb-2022 01:06:46.352 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/host-manager]
04-Feb-2022 01:06:46.375 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/host-manager]的部署已在[23]毫秒内完成
04-Feb-2022 01:06:46.378 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
04-Feb-2022 01:06:46.437 信息 [main] org.apache.catalina.startup.Catalina.start [914]毫秒后服务器启动
[root@Cent0S8-FTP logs]# less catalina.out
[root@Cent0S8-FTP logs]# tail -f catalina.out
04-Feb-2022 01:06:45.956 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/manager]
04-Feb-2022 01:06:45.995 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/manager]的部署已在[39]毫秒内完成
04-Feb-2022 01:06:45.995 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/docs]
04-Feb-2022 01:06:46.127 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/docs]的部署已在[132]毫秒内完成
04-Feb-2022 01:06:46.128 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/examples]
04-Feb-2022 01:06:46.352 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/examples]的部署已在[224]毫秒内完成
04-Feb-2022 01:06:46.352 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat/apache-tomcat-9.0.58/webapps/host-manager]
04-Feb-2022 01:06:46.375 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat/apache-tomcat-9.0.58/webapps/host-manager]的部署已在[23]毫秒内完成
04-Feb-2022 01:06:46.378 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
04-Feb-2022 01:06:46.437 信息 [main] org.apache.catalina.startup.Catalina.start [914]毫秒后服务器启动
貌似是启动成功了,但是就是访问不了主页。
或者通过查看tomcat进程来检测是否启动成功:
ps -ef | grep tomcat
[fangdake@Cent0S8-FTP ~]$ ps -ef | grep tomcat
root 932458 1 0 07:36 ? 00:00:29 /opt/java/jdk-17.0.2/bin/java -Djava.util.logging.config.file=/opt/tomcat/apache-tomcat-9.0.58/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/tomcat/apache-tomcat-9.0.58/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-9.0.58/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat/apache-tomcat-9.0.58 -Dcatalina.home=/opt/tomcat/apache-tomcat-9.0.58 -Djava.io.tmpdir=/opt/tomcat/apache-tomcat-9.0.58/temp org.apache.catalina.startup.Bootstrap start
fangdake 1714382 1511979 0 11:44 pts/3 00:00:00 grep --color=auto tomcat
这样看不清楚,我们上个图片:
这样看貌似也是启动成功了。
但是本地访问就是不行,貌似感觉是防火墙的问题。不过为了保险起见,我们再采用一种方式来检测启动成功与否。
curl 192.168.xx.xxx:8080
通过curl ip:端口号的方式在linux中连通,结果如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/9.0.58</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head><body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/9.0.58</h1>
</div>
<div id="upper" class="curved container">
<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
</div>
<div id="notice">
<img id="tomcat-logo" src="tomcat.svg" alt="[tomcat logo]" />
<div id="tasks">
<h3>Recommended Reading:</h3>
<h4><a href="/docs/security-howto.html">Security Considerations How-To</a></h4>
<h4><a href="/docs/manager-howto.html">Manager Application How-To</a></h4>
<h4><a href="/docs/cluster-howto.html">Clustering/Session Replication How-To</a></h4>
</div>
</div>
<div id="actions">
<div class="button">
<a class="container shadow" href="/manager/status"><span>Server Status</span></a>
</div>
<div class="button">
<a class="container shadow" href="/manager/html"><span>Manager App</span></a>
</div>
<div class="button">
<a class="container shadow" href="/host-manager/html"><span>Host Manager</span></a>
</div>
</div>
<br class="separator" />
</div>
<div id="middle" class="curved container">
<h3>Developer Quick Start</h3>
<div class="col25">
<div class="container">
<p><a href="/docs/setup.html">Tomcat Setup</a></p>
<p><a href="/docs/appdev/">First Web Application</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="/docs/realm-howto.html">Realms & AAA</a></p>
<p><a href="/docs/jndi-datasource-examples-howto.html">JDBC DataSources</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="/examples/">Examples</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="https://wiki.apache.org/tomcat/Specifications">Servlet Specifications</a></p>
<p><a href="https://wiki.apache.org/tomcat/TomcatVersions">Tomcat Versions</a></p>
</div>
</div>
<br class="separator" />
</div>
<div id="lower">
<div id="low-manage" class="">
<div class="curved container">
<h3>Managing Tomcat</h3>
<p>For security, access to the <a href="/manager/html">manager webapp</a> is restricted.
Users are defined in:</p>
<pre>$CATALINA_HOME/conf/tomcat-users.xml</pre>
<p>In Tomcat 9.0 access to the manager application is split between
different users. <a href="/docs/manager-howto.html">Read more...</a></p>
<br />
<h4><a href="/docs/RELEASE-NOTES.txt">Release Notes</a></h4>
<h4><a href="/docs/changelog.html">Changelog</a></h4>
<h4><a href="https://tomcat.apache.org/migration.html">Migration Guide</a></h4>
<h4><a href="https://tomcat.apache.org/security.html">Security Notices</a></h4>
</div>
</div>
<div id="low-docs" class="">
<div class="curved container">
<h3>Documentation</h3>
<h4><a href="/docs/">Tomcat 9.0 Documentation</a></h4>
<h4><a href="/docs/config/">Tomcat 9.0 Configuration</a></h4>
<h4><a href="https://wiki.apache.org/tomcat/FrontPage">Tomcat Wiki</a></h4>
<p>Find additional important configuration information in:</p>
<pre>$CATALINA_HOME/RUNNING.txt</pre>
<p>Developers may be interested in:</p>
<ul>
<li><a href="https://tomcat.apache.org/bugreport.html">Tomcat 9.0 Bug Database</a></li>
<li><a href="/docs/api/index.html">Tomcat 9.0 JavaDocs</a></li>
<li><a href="https://github.com/apache/tomcat/tree/9.0.x">Tomcat 9.0 Git Repository at GitHub</a></li>
</ul>
</div>
</div>
<div id="low-help" class="">
<div class="curved container">
<h3>Getting Help</h3>
<h4><a href="https://tomcat.apache.org/faq/">FAQ</a> and <a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></h4>
<p>The following mailing lists are available:</p>
<ul>
<li id="list-announce"><strong><a href="https://tomcat.apache.org/lists.html#tomcat-announce">tomcat-announce</a><br />
Important announcements, releases, security vulnerability notifications. (Low volume).</strong>
</li>
<li><a href="https://tomcat.apache.org/lists.html#tomcat-users">tomcat-users</a><br />
User support and discussion
</li>
<li><a href="https://tomcat.apache.org/lists.html#taglibs-user">taglibs-user</a><br />
User support and discussion for <a href="https://tomcat.apache.org/taglibs/">Apache Taglibs</a>
</li>
<li><a href="https://tomcat.apache.org/lists.html#tomcat-dev">tomcat-dev</a><br />
Development mailing list, including commit messages
</li>
</ul>
</div>
</div>
<br class="separator" />
</div>
<div id="footer" class="curved container">
<div class="col20">
<div class="container">
<h4>Other Downloads</h4>
<ul>
<li><a href="https://tomcat.apache.org/download-connectors.cgi">Tomcat Connectors</a></li>
<li><a href="https://tomcat.apache.org/download-native.cgi">Tomcat Native</a></li>
<li><a href="https://tomcat.apache.org/taglibs/">Taglibs</a></li>
<li><a href="/docs/deployer-howto.html">Deployer</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Other Documentation</h4>
<ul>
<li><a href="https://tomcat.apache.org/connectors-doc/">Tomcat Connectors</a></li>
<li><a href="https://tomcat.apache.org/connectors-doc/">mod_jk Documentation</a></li>
<li><a href="https://tomcat.apache.org/native-doc/">Tomcat Native</a></li>
<li><a href="/docs/deployer-howto.html">Deployer</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Get Involved</h4>
<ul>
<li><a href="https://tomcat.apache.org/getinvolved.html">Overview</a></li>
<li><a href="https://tomcat.apache.org/source.html">Source Repositories</a></li>
<li><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></li>
<li><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Miscellaneous</h4>
<ul>
<li><a href="https://tomcat.apache.org/contact.html">Contact</a></li>
<li><a href="https://tomcat.apache.org/legal.html">Legal</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Apache Software Foundation</h4>
<ul>
<li><a href="https://tomcat.apache.org/whoweare.html">Who We Are</a></li>
<li><a href="https://tomcat.apache.org/heritage.html">Heritage</a></li>
<li><a href="https://www.apache.org">Apache Home</a></li>
<li><a href="https://tomcat.apache.org/resources.html">Resources</a></li>
</ul>
</div>
</div>
<br class="separator" />
</div>
<p class="copyright">Copyright ©1999-2022 Apache Software Foundation. All Rights Reserved</p>
</div>
</body></html>
其实就是个HTML页面!我们不能直接在本地访问的话,我们可以把这个页面保存成html,用浏览器打开。
这个是网页打开后翻译过来的,原版是英文的。至此,我们彻底确定,我们的tomcat是启动成功的了。但是就是在本地无法访问,我们的猜测是防火墙的问题,但是我们之前也打开了8080防火墙,那究竟是什么问题呢?我们接下来去解决这个问题。
八、防火墙
我们上面讲了一下防火墙的问题,现在再重新通过这个防火墙的方式尝试解决这个不能访问的问题。
1.查看防火墙是否启动
firewall-cmd --state
结果如下:
[fangdake@Cent0S8-FTP ~]$ firewall-cmd --state
Authorization failed.
Make sure polkit agent is running or run the application as superuser.
很明显是用户权限问题,那我们切换到root用户。
# 切换到root用户
su root
# 之后会要求输入root用户的密码
# 然后我们再查看防火墙是否开启
firewall-cmd --state
结果如下:
很明显,我们看到了running,这就是说防火墙是在运行状态。
当然,如果你的防火墙没有开启的话,那就输入命令来开启防火墙:
systemctl start firewalld
2.查看防火墙开启的端口列表
firewall-cmd --permanent --zone=public --list-ports
结果如下:
[root@Cent0S8-FTP fangdake]# firewall-cmd --permanent --zone=public --list-ports
21/tcp 1025-65535/tcp
这个21和1025-65535这之间的端口是我之前开通ftp上传文件功能的时候,开通了防火墙,那8080是在1025-65535之间的。如果我们不确定,我们可以添加具体端口去开启防火墙:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
结果如下:
意思很明显:
警告:已启用
成功
那就是我们刚才说的没错,1025-65535这个之间的端口都是启动了的,当然包括8080端口。
3.重启防火墙
firewall-cmd --reload
出现success,表示重启成功。
4.验证开启的8080端口是否生效
firewall-cmd --zone=public --query-port=8080/tcp
出现yes代表生效。
5.重启tomcat
据了解,重启tomcat就可以通过centos外面的浏览器访问tomcat了,那我们试试。
sh shutdown.sh
结果如下:
[root@Cent0S8-FTP bin]# sh shutdown.sh
Using CATALINA_BASE: /opt/tomcat/apache-tomcat-9.0.58
Using CATALINA_HOME: /opt/tomcat/apache-tomcat-9.0.58
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-9.0.58/temp
Using JRE_HOME: /opt/java/jdk-17.0.2
Using CLASSPATH: /opt/tomcat/apache-tomcat-9.0.58/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-9.0.58/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
6.查看Tomcat是否以关闭
ps -ef| grep java
root 2596068 1786992 0 16:23 pts/3 00:00:00 grep --color=auto java
7.启动Tomcat
sh startup.sh
或者
./startup.sh
如图:
8.查看日志
到Tomcat安装目录的logs目录下,打开catalina.out文件,查看日志情况:
至此,貌似Tomcat又启动成功了。为什么说又呢?因为我们不止一次貌似成功了,但是我们本地打开浏览器,输入127.0.0.1:8080访问被拒绝。我们再试一下:
结果依然是gg,这就有点恶心了。到底什么缘故呢?我们在终端连接的时候是ok的:
curl 192.168.10.111:8080
结果如下:
下面其他信息就不截图了,上面我们显示过。
这就尴尬了,忙活了半天,正在终端通过curl命令可以,但是本地连接127.0.0.1:8080就是不行。这边再试了一下通过curl 127.0.0.1:8080试试:
我们看到也是ok的。这就有点TMD恶心了。这到底是怎么回事呢?转念一想,我们在本地试试通过ip:8080连接一下Tomcat试试,而不是通过127.0.0.1。如图:
纳尼?这样就可以?这是为什么呢?
到了这里,虽然不能说我们的Tomcat安装完全成功了,但是起码说可以使用了,算是半成品吧!