CentOS 安装与启动 Tomcat

准备工作
在开始安装和配置 Tomcat 之前,请确保您的 CentOS 系统已经安装完成,以下是安装 Tomcat 所需的基本环境:
- 操作系统:CentOS 7/8
- 硬件要求:至少 512MB 内存
- JDK 环境:Tomcat 需要 JDK 1.7 或更高版本
安装 JDK
安装 JDK
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
验证 JDK 是否安装成功
java -version
输出如下信息表示 JDK 安装成功:

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode) 安装 Tomcat
下载 Tomcat
从 Apache 官网下载 Tomcat 9.0 版本:
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz 解压 Tomcat
tar -zxvf apache-tomcat-9.0.41.tar.gz
移动 Tomcat 至系统目录
sudo mv apache-tomcat-9.0.41 /usr/local/tomcat
修改 Tomcat 用户

sudo chown -R tomcat:tomcat /usr/local/tomcat
设置 Tomcat 为服务
sudo vi /lib/systemd/system/tomcat.service
粘贴到文件中:
[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.x86_64 Environment=CATALINA_HOME=/usr/local/tomcat Environment=CATALINA_BASE=/usr/local/tomcat Environment='CATALINA_OPTS=-Xms512M -Xmx1024M' ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
启动 Tomcat 服务
sudo systemctl daemon-reload sudo systemctl start tomcat
检查 Tomcat 服务状态
sudo systemctl status tomcat
输出如下信息表示 Tomcat 服务启动成功:
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2021-09-19 14:10:03 UTC; 4s ago
Docs: man:systemd.service(5)
Main PID: 2416 (java)
CGroup: /system.slice/tomcat.service
└─2416 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.x86_64/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.JulManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Dcatalina.bin.dir=/usr/local/tomcat/bin -Dcatalina.lib.dir=/usr/local/tomcat/lib -Djava.io.tmpdir=/usr/local/tomcat/temp -Dorg.apache.catalina.useNaming=true -Dorg.apache.catalina.useCoyote=true -Djava.awt.headless=true -Dsun.java2d.opengl=True -Dsun.java2d.uiScale=2 -Dsun.java2d.fontScale=2 -Dsun.java2d.pipe.win=true -Dsun.java2d.pipe.awtfalse=true -Dsun.java2d.pipe.locale=zh_CN -Dsun.java2d.pipe.fontScale=2 -Dsun.java2d.pipe.fontLocale=zh_CN -Dsun.java2d.pipe.fontFallbackLocale=zh_CN -Dsun.java2d.pipe.fontFallback=true -Dsun.java2d.pipe.fontFallbackScale=1.0 -Dsun.java2d.pipe.fontFallbackName=宋体 -Dsun.java2d.pipe.fontFallbackNameFallback=宋体 -Dsun.java2d.pipe.fontFallbackNameLocale=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback=zh_CN -Dsun.java2d.pipe.fontFallbackNameLocaleFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallbackfallback 