- A+
所属分类:Nginx
Tomcat是一个流行的开源Servlet容器,适用于Java Web应用,特别适合中小型企业和开发环境。它处理客户端请求,管理Servlet生命周期,支持JSP。组件包括Catalina、Coyote、Jasper、Naming、Security和Cluster。适用于开发和中小型生产环境,跨平台,社区支持活跃。安装简便,配置通过XML文件,提供安全特性。
主机 | 应用软件 |
Nginx | nginx-1.26.2.tar.gz |
Tomcat1 | jdk-8u202-linux-x64.tar.gz+apache-tomcat-9.0.102.tar.gz |
tomcat2 | jdk-8u202-linux-x64.tar.gz+apache-tomcat-9.0.102.tar.gz |
Tomcat1,Tomcat2安装Tomcat服务
wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz //下载jdk
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.102/bin/apache-tomcat-9.0.102.tar.gz
//下载Tocmat
tar xf jdk-8u202-linux-x64.tar.gz -C /usr/local/ //解压jdk
ln -s /usr/local/jdk1.8.0_202/ /usr/local/jdk
设置jdk环境变量
vim /etc/profile.d/jdk.sh
# Java JDK
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
source /etc/profile //重新加载环境变量
java -version

部署Tomcat
useradd -s /sbin/nologin tomcat //创建tomcat用户
tar xf apache-tomcat-9.0.102.tar.gz -C /usr/local/ //解压tomcat
ln -s /usr/local/apache-tomcat-9.0.102/ /usr/local/tomcat
chown -R tomcat:tomcat /usr/local/tomcat/*
配置开机自启文件
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/apache-tomcat-9.0.102
Environment=CATALINA_BASE=/usr/local/apache-tomcat-9.0.102
Environment=CATALINA_PID=/usr/local/apache-tomcat-9.0.102/temp/tomcat.pid
ExecStart=/usr/local/apache-tomcat-9.0.102/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-9.0.102/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
重新加载 systemd
管理器的主配置文件并启动
systemctl daemon-reload
systemctl start tomcat.service
systemctl enable tomcat.service
Tomcat优化
rm -rf /usr/local/tomcat/webapps/* //删除多余工程项目
mkdir -pv /usr/local/tomcat/webapps/www
vim /usr/local/tomcat/webapps/www/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>java web page</title>
</head>
<body>
<% out.println("Welcome to Tomcat1 test page.");%> //第二台tomcat服务器改为Tomcat2用于验证
</body>
</html>
Nginx安装
curl -O https://nginx.org/download/nginx-1.26.2.tar.gz //下载nginx
yum -y install pcre-devel openssl-devel //安装依赖
useradd -s /sbin/nologin -M nginx //创建nginx用户
tar xf nginx-1.26.2.tar.gz //解压
cd nginx-1.26.2/
./configure --prefix=/usr/local/nginx-1.26.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-stream //配置
make && make install 编译安装
ln -s /usr/local/nginx-1.26.2/ /usr/local/nginx
chown -R nginx:nginx /usr/local/nginx*
配置开机自启文件
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载 systemd
管理器的主配置文件并启动
systemctl daemon-reload
systemctl start nginx.service
systemctl enable nginx.service
编写nginx.conf
# 设置运行 Nginx 工作进程的用户和用户组
user nginx nginx;
# 设置工作进程的数量,auto 表示根据 CPU 核心数自动调整
worker_processes auto;
# 设置 Nginx 的错误日志文件路径
error_log /usr/local/nginx/logs/error.log;
# 设置 Nginx 主进程的 PID 文件路径
pid /run/nginx.pid;
# 事件区块,用于配置工作进程连接的特性
events {
# 每个工作进程可以同时打开的最大连接数
worker_connections 1024;
}
# HTTP 服务器区块
http {
# 包含 MIME 类型定义文件
include mime.types;
# 默认 MIME 类型
default_type application/octet-stream;
# 定义日志格式
log_format tomcat 'remote_addr - remote_user [time_local] "request" '
'status body_bytes_sent "http_referer" '
'"http_user_agent" "http_x_forwarded_for"';
# 设置访问日志文件路径
access_log /usr/local/nginx/www_tomcat_com_access.log tomcat;
# 启用 sendfile 传输文件
sendfile on;
#tcp_nopush on; # 启用 TCP_NOPUSH 功能,需要 sendfile 开启
# 保持连接的超时时间
keepalive_timeout 60;
# 负载均衡配置,定义 Tomcat 服务器集群
upstream tomcatservers {
server 192.168.18.11:8080 max_fails=3 fail_timeout=30s; # Tomcat 服务器 1 //改为自己的Tomcat服务器IP
server 192.168.18.12:8080 max_fails=3 fail_timeout=30s; # Tomcat 服务器 2 //改为自己的Tomcat服务器IP
# 可以继续添加更多服务器
}
# 服务器区块,定义虚拟主机的配置
server {
# 监听 80 端口
listen 80;
# 服务器名称
server_name localhost;
# 反向代理设置,匹配所有请求
location / {
# 将请求代理到定义的 Tomcat 服务器集群
proxy_pass http://tomcatservers;
# 设置代理请求头,传递原始请求信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 自定义错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
# 指定错误页面的根目录
root /usr/share/nginx/html;
}
}
# 其他服务器配置可以在此添加
}
/usr/local/nginx/sbin/nginx -t //检查配置文件
systemctl reload nginx.service //重载
服务验证

两台Tomcat服务器执行shell脚本
vim tomcat.sh
#!/bin/sh
/usr/bin/wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.102/bin/apache-tomcat-9.0.102.tar.gz
/usr/bin/wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/
/usr/bin/tar zvxf apache-tomcat-9.0.102.tar.gz -C /usr/local/
/usr/bin/ln -s /usr/local/jdk1.8.0_202/ /usr/local/jdk
/usr/bin/cat > /etc/profile.d/jdk.sh << "EOF"
# Java JDK
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
EOF
source /etc/profile
java -version
/usr/sbin/useradd -s /sbin/nologin tomcat
/usr/bin/ln -s /usr/local/apache-tomcat-9.0.102/ /usr/local/tomcat
/usr/bin/chown -R tomcat:tomcat /usr/local/tomcat/*
/usr/bin/rm -rf /usr/local/tomcat/webapps/*
/usr/bin/mkdir -pv /usr/local/tomcat/webapps/www/
/usr/bin/cat > /usr/local/tomcat/webapps/www/index.jsp << EOF
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>java web page</title>
</head>
<body>
<% out.println("Welcome to Tomcat test page.");%>
</body>
</html>
EOF
/usr/bin/cat > /etc/systemd/system/tomcat.service << EOF
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/apache-tomcat-9.0.102
Environment=CATALINA_BASE=/usr/local/apache-tomcat-9.0.102
Environment=CATALINA_PID=/usr/local/apache-tomcat-9.0.102/temp/tomcat.pid
ExecStart=/usr/local/apache-tomcat-9.0.102/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-9.0.102/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
EOF
/usr/bin/systemctl daemon-reload
/usr/bin/systemctl enable --now tomcat.service
sh tomcat.sh
Nginx服务器执行shell脚本
vim nginx.sh
curl -O https://nginx.org/download/nginx-1.26.2.tar.gz
yum -y install pcre-devel openssl-devel
/usr/sbin/useradd -s /sbin/nologin -M nginx
/usr/bin/tar zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2/
./configure --prefix=/usr/local/nginx-1.26.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-stream
/usr/bin/make
/usr/bin/make install
/usr/bin/ln -s /usr/local/nginx-1.26.2/ /usr/local/nginx
/usr/bin/cat > /usr/local/nginx/conf/nginx.conf << "EOF"
user nginx nginx;
worker_processes auto;
error_log /usr/local/nginx/logs/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format tomcat 'remote_addr - remote_user [time_local] "request" '
'status body_bytes_sent "http_referer" '
'"http_user_agent" "http_x_forwarded_for"';
access_log /usr/local/nginx/www_tomcat_com_access.log tomcat;
sendfile on;
keepalive_timeout 60;
upstream tomcatservers {
server 192.168.18.11:8080 max_fails=3 fail_timeout=30s; //修改为自己tomcat1服务器的IP
server 192.168.18.12:8080 max_fails=3 fail_timeout=30s; //修改为自己tomcat2服务器的IP
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcatservers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
EOF
/usr/bin/chown -R nginx:nginx /usr/local/nginx*
/usr/bin/cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
/usr/bin/systemctl daemon-reload
/usr/bin/systemctl enable --now nginx.service
sh nginx.sh