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

centos7 部署owncloud centos7部署web服务器_centos7 部署owncloud

centos7 部署owncloud centos7部署web服务器_nginx_02

⑤ 启动Tom猫

startup.sh

centos7 部署owncloud centos7部署web服务器_linux_03

⑥ 主要目录说明

目录

说明

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

centos7 部署owncloud centos7部署web服务器_centos7 部署owncloud_04


centos7 部署owncloud centos7部署web服务器_nginx_05

三、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作为后端网站的反向代理及负载均衡器,来提升整个站点的负载并发能力

① 网络拓扑结构

centos7 部署owncloud centos7部署web服务器_centos7 部署owncloud_06


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

centos7 部署owncloud centos7部署web服务器_centos7 部署owncloud_07

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

centos7 部署owncloud centos7部署web服务器_centos7 部署owncloud_08

⑤ 配置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

开始测试

centos7 部署owncloud centos7部署web服务器_centos7 部署owncloud_09


centos7 部署owncloud centos7部署web服务器_centos7 部署owncloud_10