一、部署
1、部署jdk
1.1 将rpm包上传至/app/tools下
1.2 安装并查看是否安装成功
软件包会自动配置jdk的环境变量
2、部署tomcat
2.1 官网下载压缩包后解压
做个软连接
检查版本
启动
二、目录结构
| bin | 存放tomcat管理命令 |
| conf | 配置文件 |
| lib | 依赖与库文件 |
| logs | 日志 |
| webapps | 站点目录,存放war包 |
| work | 启动时会在目录下的work目录中生成一系列的文件夹和.java文件和编译后的.class文件 |
1、bin
| startup.sh | 启动脚本 |
| shutdown.sh | 关闭脚本 |
| catalina.sh | 核心脚本,配置tomcat优化,jvm优化 |
2、conf
| server.xml | tomcat配置文件 |
| web.xml | 配置文件,辅助配置 |
3、logs
| catelina.out | tomcat应用日志,启动加载、关闭、错误等信息 |
| localhost_a***ess_log.xxx.txt | 访问日志 |
三、运行代码
war包:将war包放在webapps目录,直接访问即可
jar包:
nohup java -jar -Dfile.encoding=UTF-8 项目路径 --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null &
四、server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- ========== 根元素 Server ========== -->
<Server port="8005" shutdown="SHUTDOWN">
<!--
port: 关闭Tomcat的监听端口
shutdown: 关闭指令字符串(建议修改默认值)
-->
<!-- ========== 全局监听器配置 ========== -->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- ========== 服务配置 Service ========== -->
<Service name="Catalina">
<!-- ===== 连接器配置 Connector (HTTP) ===== -->
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200"
minSpareThreads="10"
enableLookups="false"
a***eptCount="100"
disableUploadTimeout="true"
***pression="on"
***pressionMinSize="2048"
***pressableMimeType="text/html,text/xml,text/css,application/javascript"
URIEncoding="UTF-8">
<!--
port: 监听端口
protocol: 协议类型
connectionTimeout: 连接超时时间(ms)
redirectPort: SSL重定向端口
maxThreads: 最大线程数
minSpareThreads: 最小空闲线程
enableLookups: 禁用DNS反向查询
a***eptCount: 等待队列长度
disableUploadTimeout: 上传文件不限时
***pression: 启用压缩
URIEncoding: URL编码格式
-->
</Connector>
<!-- ===== 连接器配置 Connector (AJP) ===== -->
<Connector
port="8009"
protocol="AJP/1.3"
redirectPort="8443"
secretRequired="false"/>
<!-- ===== SSL配置示例 ===== -->
<!--
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="changeit"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- ========== 引擎配置 Engine ========== -->
<Engine name="Catalina" defaultHost="localhost">
<!--
name: 引擎名称
defaultHost: 默认虚拟主机
-->
<!-- ===== 集群配置示例 ===== -->
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<!-- ========== 主机配置 Host ========== -->
<Host name="localhost"
appBase="webapps"
unpackWARs="true"
autoDeploy="true">
<!--
name: 虚拟主机域名
appBase: 应用部署目录
unpackWARs: 自动解压WAR包
autoDeploy: 自动部署
-->
<!-- ===== 上下文配置 Context ===== -->
<Context
path=""
docBase="myapp"
reloadable="true"
crossContext="true">
<!--
path: 访问路径(空表示根路径)
docBase: 应用目录名称
reloadable: 开发模式热加载
-->
</Context>
<!-- ===== 访问日志配置 ===== -->
<Valve className="org.apache.catalina.valves.A***essLogValve"
directory="logs"
prefix="localhost_a***ess_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
修改访问日志格式
<Valve className="org.apache.catalina.valves.A***essLogValve"
directory="logs"
prefix="localhost_a***ess_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" "%{X-Forwarded-For}i"" />
五、监控功能
通过各种监控工具(Zabbix/Prometheus)监控tomcat/java需要开启远程监控功能(JMX)
在配置中修改tomcat启动的选项,开启监控功能
vim catelina.sh
CATALINA_OPTS="$CATALINA_OPTS \
-D***.sun.management.jmxremote \ # 开启监控功能
-D***.sun.management.jmxremote.port=12345 \ # 指定端口
-D***.sun.management.jmxremote.authenticate=false \ # 关闭认证功能
-D***.sun.management.jmxremote.ssl=false \ # 关闭ssl加密功能
-Djava.rmi.server.hostname=192.168.228.7" # 网卡ip,监听的地址
六、配置https
阿里云ssl配置文档
强制http转https
在web.xml文件</wel***e-file-list>后添加以下内容
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>