CentOS7 运维 - Tomcat Web应用服务器
- 一、安装部署Tomcat
- ① 安装JDK
- ② 安装Tomcat
- ③ 创建快捷启动
- ④ 配置JDK环境变量[yum安装可跳过]
- ⑤ 启动~~Tom猫~~
- ⑥ 主要目录说明
- 二、Tomcat虚拟主机
- ① 创建accp和benet项目目录和文件
- ② 修改tomcat主配置文件
- ③ 测试
- 三、Tomcat服务优化
- ① 优化启动速度
- ② 常用的优化参数
- 四、实现负载均衡群集
- ① 网络拓扑结构
- ② 部署Nginx服务器
- ③ 部署两台Tomcat服务器
- ⑤ 配置Nginx服务器
Tomcat
是一款免费开源的轻量级Web
应用服务器
是开发调试JSP
程序的首选,可作为Web
容器、Servlet
容器、JSP
容器
Web容器:实现 Web
服务器功能
Servlet容器:处理Servlet
代码
JSP容器:将JSP
动态页面翻译成Servlet
代码
一、安装部署Tomcat
① 安装JDK
tomcat
使用java
编写,所以需要先安装jdk
并配置环境
yum -y install java-1.8.0-openjdk*
② 安装Tomcat
wget -P /opt https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.4/bin/apache-tomcat-10.0.4.tar.gz
cd /opt
tar -zxvf apache-tomcat-10.0.4.tar.gz
mv apache-tomcat-10.0.4 /usr/local/tomcat
③ 创建快捷启动
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/startup.sh
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/shutdown.sh
④ 配置JDK环境变量[yum安装可跳过]
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH ' > /etc/profile.d/java.sh
补充 | 说明 |
CLASSPATH | 编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件 |
dj.jar | 是关于运行环境的类库,主要是 swing 的包 |
tools.jar | 主要是一些jdk工具的类库,包括javac,java,javap,javadoc等 |
JDK | java development kit (java开发工具) |
JRE | java runtime environment (java运行时环境) |
JVM | java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件 |
编写一个Java
程序编译运行
public class HelloCat{
public static void main (String[] args){
System.out.println("HelloCat");
}
}
#编译 编译后会生成一个HelloCat.class
javac HelloCat.java
#运行
java HelloCat
⑤ 启动Tom猫
startup.sh
⑥ 主要目录说明
目录 | 说明 |
bin | 存放 Windows 或 Linux 平台上启动和关闭 Tomcat 的脚本文件 |
conf | 存放 Tomcat 服务器的各种全局配置文件,其中最重要的是的是 server.xml 和 web.xml |
lib | 存放 Tomcat 运行需要的库文件(JARS),一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包 |
logs | 存放 Tomcat 执行时的 LOG 文件(日志) |
temp | 存放 Tomcat 运行时产生的文件 |
webapps | Tomcat 的主要 Web 发布目录(包括应用程序示例),是存放项目资源的目录 |
work | Tomcat 工作目录,存放 jsp 编译后产生的 class 文件,一般清除 Tomcat 缓存的时候会使用到 |
二、Tomcat虚拟主机
① 创建accp和benet项目目录和文件
mkdir /usr/local/tomcat/webapps/accp
mkdir /usr/local/tomcat/webapps/benet
echo "accp" > /usr/local/tomcat/webapps/accp/index.jsp
echo "benet" > /usr/local/tomcat/webapps/benet/index.jsp
② 修改tomcat主配置文件
vim /usr/local/tomcat/conf/server.xml
[165行前插入]
<Host name="www.accp.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/accp" path="" reloadable="true" />
</Host>
<Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/benet" path="" reloadable="true" />
</Host>
补充 | 说明 |
Host name | 主机名 |
appBase | Tomcat程序工作目录,相对路径为webapps,绝对路径为/usr/local/tomcat/webapps |
unpackWARs | 是否解压war包 |
autoDeploy | 指示Tomcat运行时,如有新的WEB应用是否允许自动部署 |
xmlValidation | 是否验证xml文件执行有效性检验的标志 |
xmlNamespaceAware | 是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验 |
appBase | WEB应用的目录 |
path | 设置访问的URI为WEB应用的根目录 |
reloadable | 是否在程序有改动时重新载入 |
③ 测试
echo "192.168.1.1 www.benet.com www.accp.com" >> /etc/hosts
三、Tomcat服务优化
① 优化启动速度
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
#117行
securerandom.source=file:/dev/urandom
#random和urandom都属于伪终端,都能提供数据流,但是后者速度更快
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
② 常用的优化参数
vim /usr/local/tomcat/conf/server.xml
minSpareThreads="50"
#最小空闲线程数为50
enableLookups="false"
#不开启反查域名
disableUploadTimeout="true"
#上传时使用超时机制
acceptCount="300"
#线程数都被占用时,可传入最大连接请求队列为300
maxThreads="500"
#可创建的最大线程数为500
processorCache="500"
#控制Tomcat内部RequestProcessor的缓存池大小,若超过500,则会创建新的RequestProcessor实例
URIEncoding="UTF-8"
#字符集为UTF-8
compression="on"
#开启对响应的数据进行GZIP压缩
compressionMinSize="2048"
#压缩响应最小值,开启则默认2048,只有大于该值时才会对报文进行压缩
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>
#压缩可支持类型
四、实现负载均衡群集
Tomcat虽然可以满足基本的Web服务需求但是对于单点故障和面临庞大的并发量时有些不足,所以配合使用Nginx作为后端网站的反向代理及负载均衡器,来提升整个站点的负载并发能力
① 网络拓扑结构
Nginx
服务器作为前端,Tomcat
服务器作为后端,web
页面请求由Nginx
服务来进行转发
② 部署Nginx服务器
yum -y install pcre pcre-devel zlib zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
wget -P /opt http://nginx.org/download/nginx-1.19.9.tar.gz
cd /opt
tar zxvf nginx-1.19.9.tar.gz
cd nginx-1.19.9
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
make -j && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
ln -s /usr/local/nginx/conf/nginx.conf /etc/nginx.conf
echo '
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.service
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service &> /dev/null
③ 部署两台Tomcat服务器
#!/bin/bash
yum -y install java-1.8.0-openjdk*
wget -P /opt https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.4/bin/apache-tomcat-10.0.4.tar.gz
cd /opt
tar -zxvf apache-tomcat-10.0.4.tar.gz
mv apache-tomcat-10.0.4 /usr/local/tomcat
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/startup.sh
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/shutdown.sh
Tomcat服务器一
echo "<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<h1><%=request.getServletContext().getServerInfo() %></h1>
<h1>动态网页一</h2>" > /usr/local/tomcat/webapps/ROOT/index.jsp
Tomcat服务器二
echo "<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<h1><%=request.getServletContext().getServerInfo() %></h1>
<h1>动态网页二</h2>" > /usr/local/tomcat/webapps/ROOT/index.jsp
⑤ 配置Nginx服务器
配置均衡服务器列表,进入主配置文件
vim /etc/nginx.conf
upstream tomcat_server{
server 192.168.1.8:8080 weight=1;
server 192.168.1.69:8080 weight=1;
}
配置Nginx
处理动态页面请求,将 .jsp
文件请求转发到Tomcat
服务器处理
location ~ .*.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重启服务
systemcmtl restart nginx
开始测试