CentOS7系统下 Tomcat 安装指南

CentOS7系统下 Tomcat 安装指南

一、Tomcat 介绍

Tomcat 是 Apache 基金会下的一个开源 Servlet 容器,用于运行 Java 编写的 Web 程序。相比 WebLogic、WebSphere 这类重量级应用服务器,Tomcat 更轻量、配置简单、上手快,是目前更为常用的 Java Web 容器之一。Tomcat 和 JDK 之间也存在明确的版本对应关系,并不是任意组合都能正常运行:

  • Tomcat 9.x:最低要求 JDK 8,是目前唯一还在支持 JDK 8 环境的主线版本,官方支持周期延长至 2027 年3月

  • Tomcat 10.1.x:最低要求 JDK 11,采用 Jakarta EE 9 规范

  • Tomcat 11.x:最低要求 JDK 17,采用 Jakarta EE 10/11 规范,是当前最新的主线版本

JDK 版本决定了 Tomcat 版本的选择上限,如果系统使用的是 JDK 8,那么就只能选择 Tomcat 9.x 系列;如果计划升级到 Tomcat 10/11,也必须先把 JDK 一并升级到 11 或 17 以上。因此在做选型时,要把 JDK 和 Tomcat 作为一个整体版本组合来考虑

二、Tomcat 安装部署

1、下载Tomcat

由于操作系统上JDK版本为8,所以这里下载的是Tomcat 9.x,官方下载地址是https://tomcat.apache.org/download-90.cgi

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.120/bin/apache-tomcat-9.0.120.tar.gz 
tar zxf apache-tomcat-9.0.120.tar.gz
mv apache-tomcat-9.0.120 /usr/local/
ln -s /usr/local/apache-tomcat-9.0.120 /usr/local/tomcat


2、Tomcat目录结构说明

tomcat.png

bin:存放启动脚本和相关java文件,其中 catalina.sh 用于启动/停止tomcat

conf:存放配置文件,server.xml 是主配置文件,tomcat-users.xml 用于配置管理账号

lib:库文件目录

logs:日志文件目录

temp:临时文件目录

work:程序工作目录

webapps:应用程序部署目录,webapps/ROOT 是默认站点的根目录


3、配置Tomcat环境变量

Tomcat 运行时需要检查 CATALINA_HOME 环境变量,需要提前好该变量才能通过脚本启动服务

cat > /etc/profile.d/tomcat.sh << 'EOF'
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
EOF

source /etc/profile.d/tomcat.sh


4、启动tomcat

通过 catalina.sh 脚本启动Tomcat服务,默认监听端口为8080。如果启动后发现端口没有监听,可以改用 catalina.sh run 前台运行,会在当前终端窗口打印出详细日志方便排查问题

/usr/local/tomcat/bin/catalina.sh start

tomcat2.png

5、验证

使用浏览器访问Tomcat,默认首页右侧可以看到 Server Status、Manager App、Host Manager 三个入口,但是此时还无法访问,还需要放行网络和配置账号才行

tomcat3.png

6、配置访问权限

由于 Tomcat 默认在 webapps/manager 和 webapps/host-manager 里配置了IP白名单限制,只允许本机(127.0.0.1)访问。所以Server Status、Manager App、Host Manager 等模块都是无法访问的,会提示403错误,这里需要修改配置文件放开IP

[root@v1 tomcat]# cat $CATALINA_HOME/webapps/manager/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <Valve className="org.apache.catalina.valves.RemoteCIDRValve"
         allow="127.0.0.0/8,::1/128,0.0.0.0/0" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>


[root@v1 tomcat]# cat $CATALINA_HOME/webapps/host-manager/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <Valve className="org.apache.catalina.valves.RemoteCIDRValve"
         allow="127.0.0.0/8,::1/128,0.0.0.0/0" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

重启服务

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh


7、配置管理账号

其实访问 Tomcat 首页并点击Server Status、Manager App、Host Manager 模块会弹出一个登录框,但是出于安全考虑,在完成安装后是没有进行任何用户配置的,也就是说此时没有用户可以登录进去,需要自行手动配置管理员账号

cat $CATALINA_HOME/conf/tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
# 在</tomcat-users> 结束标签之前加入下面的信息
# manager-gui对应Manager App(含 Server Status);admin-gui 对应 Host Manager,两个都要授权给同一个用户,才能两个入口都能登录
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="123456" roles="manager-gui,admin-gui"/>
</tomcat-users>

重启服务

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

tomcat4.png

8、部署应用程序

Tomcat整个服务正常后,后续只需要把Java程序的war包上传到webapps目录即可,Tomcat 会自动监控该目录,如果检测到新的war包就会自动解压部署,如这里上传了一个myapp.war的包

cp myapp.war $CATALINA_HOME/webapps/


几秒钟后 Tomcat 会自动解压出一个 ./myapp同名目录,可以通过 logs/catalina.out 观察部署过程,如果看到类似 Deployment of web application archive [.../myapp.war] has finished 就说明部署成功了,如果服务启动后出现各类错误也可以通过该日志进行排查

tail -f $CATALINA_HOME/logs/catalina.out

文章评论

猜你喜欢

CentOS7系统下 JAVA8 / JDK8 安装指南

运维技术 CentOS7系统下 JAVA8 / JDK8 安装指南

一、Java版本与JDK介绍Java 根据应用领域不同,分为 Java SE、Java EE、Java ME 三类(早期也称 J2SE、J2EE、J2ME,Java 5 之后官方统一改用现名),三者区...