安装Tomcat
1 下载Tomcat
2 上传虚拟机
- 上传用到xshell、xftp => 下载
unzip xxx.zip -d /home/path/tomcat
#解压
chmod -R 775 /home/path/tomcat
#赋予执行权限
3 配置Tomcat
-
Tomcat是Java语言编写的也是jar包启动的,只要jdk配置完成
-
java -jar
命令可以执行,此时就可以启动Tomcat了 -
配置jdk查看 => Linux安装Java jdk
-
/home/path/tomcat/apache-tomcat-9.0.52/bin/startup.sh
#使用bin下的sh脚本启动默认配置的Tomcat
-
/home/path/tomcat/apache-tomcat-9.0.52/bin/shutdown.sh
#关闭tomcat,准备自定义配置tomcat
配置Tomcat
- 修改tomcat启动端口
cd /home/path/tomcat/apache-tomcat-9.0.52/conf/
#进入配置文件夹找到server.xml
vi server.xml
#编辑修改端口8284 => 中文配置文件,附录自行获取
映射tomcat应用文件 => 不需要的不要设置
- tomcat可以将前端的html等文件放置
webapps
目录下
也可以用映射路径的方式去映射文件路径
<!--
映射路径 => 如果不需要映射请不要添加这个,找不到真实路径会报错。
path: 访问localhost:8080/web/gis/monitor 会去映射的docBase路径下找文件
相当于已经将文件放到了webapps目录下,不用手动将文件放置webapps下面。
docBase: 真实文件存放的位置。
workDir: 存放一些编译的文件,大多都是指jsp编译成class文件。
crossContext: 多个应用部署在一个tomcat时,true表示可以互相照顾。
-->
<!--
<Context path="/web/gis/monitor" docBase="/home/sg/sgssjd/ONEMAP/SSJD/web/sfs-gis-monitor" workDir="" crossContext="true" />
<Context path="/web/gis/sdk" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-sdk" workDir="" crossContext="true" />
<Context path="/web/gis/manage" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-manage" workDir="" crossContext="true" />
<Context path="/web/gis/home" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-home" workDir="" crossContext="true" />
<Context path="/web/gis/bi" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-bi" workDir="" crossContext="true" />
<Context path="/monitor/mis" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/mis" workDir="" crossContext="true" />
<Context path="/monitor/cdn" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/cdn" workDir="" crossContext="true" />
<Context path="/home/file" docBase="/home/sg/sgssjd/ONEMAP/file" reloadable="true" />
<Context path="/web/gis/proxy" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-sdk/proxy"
workDir="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-sdk/proxy/WEB-INF/classes" crossContext="true" />
-->
4 开机启动脚本
vi /etc/init.d/tomcat
#编辑一个启动脚本,开机自启chkconfig --add tomcat
#添加到系统快捷执行脚本中service xxx
#用service命令执行创建的脚本
chkconfig tomcat on
#开机自动执行
#!/bin/sh
# chkconfig: 345 99 10
export JAVA_HOME=/home/path/java/jdk1.8.0_301
export JRE_HOME=/home/path/java/jdk1.8.0_301/jre
export CATALINA_HOME=/home/path/tomcat/apache-tomcat-9.0.52
export CATALINA_BASE=/home/path/tomcat/apache-tomcat-9.0.52
start()
{
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"启动 Tomcat"
$CATALINA_HOME/bin/startup.sh
echo $"启动完成"
fi
}
stop()
{
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"停止 Tomcat"
$CATALINA_HOME/bin/shutdown.sh
echo $"成功停止"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
echo $"重启 Tomcat"
stop
sleep 1
start
;;
*)
echo $"默认重启 Tomcat"
stop
sleep 1
start
;;
esac
exit 0
service tomcat stop
#start/stop/restart => 启动/停止/重启(无参数默认重启)
开放端口
- 添加指定需要开放的端口:
firewall-cmd --add-port=8284/tcp --permanent
- 重载入添加的端口:
firewall-cmd --reload
附录
tomcat中文配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--
根据一个或多个贡献者许可协议,许可给Apache软件基金会(ASF)。
贡献者的许可协议。 有关版权归属的其他信息,请参见随本作品分发的NOTICE文件。
有关版权所有权的其他信息,请参见随本作品分发的NOTICE文件。
ASF根据Apache许可证2.0版("许可证")将本文件许可给你。
("许可证");除非遵守许可证的规定,否则您不得使用本文件。
许可证。 你可以在以下网址获得一份许可证的副本
http://www.apache.org/licenses/LICENSE-2.0
除非适用的法律要求或以书面形式同意,根据本许可证分发的软件
许可证下分发的软件是以 "原样 "为基础的。
没有任何形式的保证或条件,无论是明示还是暗示。
有关许可证下的权限和限制的具体语言,请参见许可证。
许可证下的权限和限制。
-->
<!--
注意:"服务器 "本身并不是一个 "容器",所以你不能在这一层定义诸如 "阀门 "之类的子组件。
在这一层定义诸如 "阀门 "之类的子组件。
文档见/docs/config/server.html
-->
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- 安全监听器。文档见/docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!-- APR库加载器。文档见/docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- 防止因使用特定的java/javax API而导致的内存泄漏-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- 全局JNDI资源
文档:/docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- 可编辑的用户数据库,也可由
用户数据库Realm来验证用户。
-->
<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>
<!-- 一个 "服务 "是一个或多个 "连接器 "的集合,共享一个 "容器"。
注意:一个 "服务 "本身不是一个 "容器"。
所以你不能在这一层定义诸如 "阀门 "之类的子组件。
文档见/docs/config/service.html
-->
<Service name="Catalina">
<!--连接器可以使用一个共享的执行器,你可以定义一个或多个命名的线程池-->
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
<!-- 一个 "连接器 "代表一个端点,通过它接收请求
并返回响应。文档在:
Java HTTP连接器。/docs/config/http.html
Java AJP连接器。/docs/config/ajp.html
APR(HTTP/AJP)连接器。/docs/apr.html
在8080端口上定义一个非SSL/TLS HTTP/1.1连接器
-->
<Connector port="8284" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- 一个使用共享线程池的 "连接器"。-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- 在8443端口定义一个SSL/TLS HTTP/1.1连接器
这个连接器使用NIO的实现。默认的
SSLImplementation将取决于是否存在APR/native
库和AprLifecycleListener的useOpenSSL属性。
AprLifecycleListener的useOpenSSL属性。
JSSE或OpenSSL风格的配置都可以被使用,而不需要考虑
选择的SSL实施方式。下面使用的是JSSE风格的配置。
-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- 用HTTP/2定义8443端口的SSL/TLS HTTP/1.1连接器
这个连接器使用APR/native实现,它总是使用
OpenSSL用于TLS。
可以使用JSSE或OpenSSL风格的配置。OpenSSL风格
风格的配置在下面使用。
-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- 在8009端口定义一个AJP 1.3连接器 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
-->
<!-- 一个引擎代表(在Catalina内)处理每个请求的入口点。
每个请求。 Tomcat独立的引擎实现
分析包含在请求中的HTTP头,并将它们传递给
到适当的主机(虚拟主机)上。
文档见/docs/config/engine.html -->
<!-- 你应该设置jvmRoute以支持通过AJP的负载平衡,即。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
<!--关于集群,请看以下文档。
/docs/cluster-howto.html (简单的方法)
/docs/config/cluster.html (参考文档) -->
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<!-- 使用LockOutRealm来防止试图猜测用户密码的行为
试图通过暴力攻击来猜测用户密码 -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- 该领域使用在全局JNDI资源中配置的UserDatabase
资源中配置的 UserDatabase,键为 "UserDatabase"。 任何对该用户数据库进行的编辑
对这个 UserDatabase 所做的任何编辑都会立即被
可供 Realm 使用。 -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 单点登录阀,在网络应用之间共享认证
文档在。/docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- 访问日志处理所有的例子。
文件在。/docs/config/valve.html
注意:使用的模式等同于使用pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<!-- 映射路径 => 如果不需要映射请不要添加这个,找不到真实路径会报错。
path: 访问localhost:8080/web/gis/monitor 会去映射的docBase路径下找文件
相当于已经将文件放到了webapps目录下,不用手动将文件放置webapps下面。
docBase: 真实文件存放的位置
workDir: 存放一些编译的文件,大多都是指jsp编译成class文件。
crossContext: 多个应用部署在一个tomcat时,true表示可以互相照顾
-->
<!--
<Context path="/web/gis/monitor" docBase="/home/sg/sgssjd/ONEMAP/SSJD/web/sfs-gis-monitor" workDir="" crossContext="true" />
<Context path="/web/gis/sdk" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-sdk" workDir="" crossContext="true" />
<Context path="/web/gis/manage" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-manage" workDir="" crossContext="true" />
<Context path="/web/gis/home" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-home" workDir="" crossContext="true" />
<Context path="/web/gis/bi" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-bi" workDir="" crossContext="true" />
<Context path="/monitor/mis" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/mis" workDir="" crossContext="true" />
<Context path="/monitor/cdn" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/cdn" workDir="" crossContext="true" />
<Context path="/home/file" docBase="/home/sg/sgssjd/ONEMAP/file" reloadable="true" />
<Context path="/web/gis/proxy" docBase="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-sdk/proxy"
workDir="/home/sg/sgssjd/ONEMAP/BASE/web/sfs-gis-sdk/proxy/WEB-INF/classes" crossContext="true" />
-->
</Host>
</Engine>
</Service>
</Server>