tomcat

一.Tomcat 部署

1.安装JDK

#将源代码包置于/opt下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm

#安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 

rpm -ql jdk1.8 | tail -n 1
#确定安装路径

cd /usr/java/jdk1.8.0_201-amd64/;ls 

- bin: 存放 Java 可执行文件的目录
- include: 存放 Java 开发头文件的目录
- jre: 存放 Java 运行时环境的目录
- LICENSE: JDK 许可证文件
- README.html: JDK 的直观说明文档(HTML 格式)
- src.zip: JDK 的源代码压缩包
- THIRDPARTYLICENSEREADME.txt: 第三方许可证文档
- COPYRIGHT: JDK 的版权信息
- javafx-src.zip: JavaFX 源代码压缩包
- lib: 存放 JDK 和 JavaFX 库文件的目录
- man: 存放 JDK 手册页(man page)文件的目录
- release: JDK 的版本信息
- THIRDPARTYLICENSEREADME-JAVAFX.txt: JavaFX 第三方许可证文档

java -version 
#JDK版本

2.设置JDK环境变量

#查看全局配置文件
vim /etc/profile

 当用户登录到系统时,系统会先执行 /etc/profile 文件,然后再执行 /etc/profile.d 目录下的所有以 .sh 结尾的文件。这些文件通常包含了一些用于设置全局环境变量和执行其他初始化操作的脚本命令。

vim /etc/profile.d/java.sh
#添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH #最左原则:linux查找可执行文件是根据PATH变量从左往右查找,找到即停止。 #所以需要将安装版本的路径放在$PATH前面 `CLASSPATH` 是一个环境变量,用于指定 Java 程序运行时的类路径。类路径是指计算机中存储 Java 类文件和库文件的路径。当 Java 程序运行时,虚拟机会搜索类路径上指定的路径,以找到所需的类文件和库文件,以便正确加载和执行程序。 #CLASSPATH和 PATH是必需的,而JAVA_HOME和JRE_HOME是为了方便修改,只需要修改JAVA_HOME

 

source /etc/profile.d/java.sh
#刷新配置文件
java -version
#查看JDK版本

3.安装Tomcat并用catalina启动

解压

#解压tomcat安装包
cd /opt
tar zxf apache-tomcat-9.0.16.tar.gz   
#将源码包目录拷贝至/usr/local/下并重命名为tomcat
#简化路径,方便管理
mv apache-tomcat-9.0.16 /usr/local/tomcat
#启动Tomcat的方法,省略路径
startup.sh          #后台启动tomcat
catalina.sh start   #后台启动tomcat
catalina.sh run     #前台启动 tomcat

#关闭Tomcat的方法:
shutdown.sh      关闭tomcat

#查看tomcat是否启动:
netstat ss ps jps

useradd -s /sbin/nologin tomcat
#新建用户
chown tomcat:tomcat tomcat/ -R
#修改属主和属组

#添加到systemd
cat
> /usr/lib/systemd/system/tomcat.service <<EOF [Unit] Description=Tomcat After=syslog.target network.target [Service] Type=forking ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh RestartSec=3 PrivateTmp=true User=tomcat Group=tomcat [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload  #重新加载 systemd 的配置文件
/usr/local/tomcat/bin/catalina.sh start
ss -ntap |grep 8080

 

二.Tomcat的端口和主要目录

1.Tomcat端口

8080: 默认接收 http 请求的端口

8005: 安全端口,可以关闭tomcat

8009: apache 和 tomcat 联动 AJP 协议

8443:负责处理https请求连接

2.主要目录

安装目录下文件介绍

目录名字功能
bin 存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件
conf 存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。
lib 存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包
logs 存放 Tomcat 日志 catalina.out
temp 存放 Tomcat 运行时产生的文件
webapps 存放项目资源的目录
work Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存)

conf子目录

文件名说明
server.xml 主配置文件 全局生效
web.xml 每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件
context.xml 用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件
tomcat-users.xml 用户认证的账号和密码文件
catalina.policy 当使用security选项启动omcat时,用于为tomcat设置安全策略
catalina.properties Tomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数
logging.properties Tomcat日志系统相关的配置,可以修改日志级别和日志路径等
  注意配置文件对于大小写敏感

日志文件

ls /usr/local/tomcat/logs/
catalina.2020-07-14.log  #tomcat服务日志 catalina.out               #tomcat服务日志 host-manager.2020-07-14.log   #host manager管理日志 localhost.2020-07-14.log       #默认主机日志 localhost_access_log.2020-07-14.txt  ##默认主机访问日志 manager.2020-07-14.log        #manager 管理日志

.jsp文件

mkdir /usr/local/tomcat/webapps/test

vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

三.虚拟主机(基于域名)

1.在 webapps 日录中添加各个站点的网页根目录,准备测试页面文件。

2.修改 tomcat 主配置文件 server.xml

  在 Engine 配置段下面添加多 Host 配置段,设置不同的虚拟主机配置参数;

  在 Host 配置段下添加一个或多个 context 配置段,设置虚拟主机的web应用程序的存放位置。

1.创建 byyb 和 byyd 项目目录和文件

mkdir /usr/local/tomcat/webapps/hx1mkdir /usr/local/tomcat/webapps/hx2echo "This is hx1\!" > /usr/local/tomcat/webapps/hx1/index.jsp
echo "This is hx2\!" > /usr/local/tomcat/webapps/hx2/index.jsp

 2.修改 Tomcat 主配置文件 server.xml

vim /usr/local/tomcat/conf/server.xml

#165行前插入
<Host name="www.hx1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 <Context docBase="/usr/local/tomcat/webapps/hx1" path="" reloadable="true" />
</Host>

<Host name="www.hx2.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 <Context docBase="/usr/local/tomcat/webapps/hx2" path="" reloadable="true" /></Host> 

##注释##
Host 
name:主机名
appBase:Tomcat程序工作目录,即存放web应用程序的目录;相对路径为webapps,绝对路径为 /usr/local/tomcat/webapps
unpackWARs:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true
xmlValidation:是否验证xml文件执行有效性检验的标志
xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验

Context
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
path:相对于Web服务器根路径而言的URI;如果为空"",则表示为此webapp的根路径 / ;
reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false
##

#重新启动
/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start

echo "192.168.100.146 www.hx1.com www.hx2.com" >> /etc/hosts

 3.浏览器访问验证

#使用虚拟机的浏览器访问,windows需要修改本地hosts文件  C:\windows\system32\drivers\etc\hosts
http://www.hx1.com:8080/ http://www.hx2.com:8080/

 

四.Tomcat优化

怎么查看线程数?

ss -natp | grep java 看pid

ps -T -p pid

1.配置文件优化

maxThreads (最大线程数/并发)

processorCache (进程缓冲)

acceptCount (等待队列数)

enableLookups (关闭DNS反向解析)

URIEncoding (网页字符集编码UTF-8)

maxKeepAliveRequests (长连接最大请求数)

connectionTimeout (连接超时时间)

compression (开启页面压缩)

2.系统内核优化

/etc/security/limits.conf 
nofile 
nproc  
memlock

如果要修改 nofilenproc 的限制,你可以在文件中加入类似以下的行:

<domain>      <type>  <item>         <value>
*       soft    nofile      4096
*       hard    nofile      8192
*       soft    nproc       100
*       hard    nproc       200
/etc/sysct1.conf   
net.ipv4.tcp_tw_reuse=1   
net.ipv4.tcp_tw_recycle=1  
net.ipv4.tcp_fin_timeout=30  
net.ipv4.tcp_max_tw_buckets=5000              net.ipv4.ip_local_port_range=1024 65535

3.JVM优化

参数 说明 举例
-Xms 置应用程序初始使用的堆内存大小(年轻代+老年代) -Xms2g
-Xmx 设置应用程序能获得的最大堆内存早期JVM不建议超过32G,内存管理效率下降 -Xms4g
-XX:NewSize 设置初始新生代大小 -XX:NewSize=128m
-XX:MaxNewSize 设置最大新生代内存空间  -XX:MaxNewSize=256m
-Xmnsize  同时设置-XX:NewSize 和 -XX:MaxNewSize -Xmn1g
-XX:NewRatio 以比例方式设置新生代和老年代 -XX:NewRatio=2new/old=1/2
-XX:SurvivorRatio 以比例方式设置eden和survivor(S0或S1) -XX:SurvivorRatio=6eden/survivor=6/1new/survivor=8/1
-Xss 置每个线程私有的栈空间大小,依据具体线程 -Xss256k

在 catalina.sh 中设置 JAVA_OPTS 参数

JAVA OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2046m -Xx:PermSize-1024m -XX:MaxPermSize=1024m -Xmn768m"
-server 表示启用JDK的server模式,实现在多核服务器性能更佳 
 
-Xms2048m 
-Xmx2048m 设置JVM堆内存初始值和最大值一样大,一般设置为物理内存的 1/2

-XX:Permsize=1024m 
-XX:MaxPermsize=1024m
设置永久代(非堆内存) 初始值和最大最一样大,一般设置为物理内存的 1/4

初始值和最大最设置一样大的原因?
可以减少GC次数和内存伸缩带来的频繁内存中请,从而减少一定的系统开销。
        
-Xmn 设置JVM堆内存新生代的大小,一般设置为堆内存的 3/8

-xx:ParallelGCThreads=-2 设置并行GC(垃圾回收) 线程数,提高垃圾回收效率 
-XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=/usr/local/tomcat/temp/oom.hprof  设置进程发生OOM异常退出会进行DUMP备份
-XX:+DisableExplicitGc 禁止调用System.gc()方法,防止误调用系统gc方法导致系统的JVM堆内存大起大落而使系统响应效率严重降低

 



 

posted @ 2024-06-17 14:34  hx_ky36  阅读(3)  评论(0编辑  收藏  举报