java单体项目部署
(node1)部署mysql8
下载仓库
dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
centos7版本:
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
dnf repolist enabled | grep mysql
dnf install -y mysql-community-server --nogpgcheck
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
查看密码
grep password /var/log/mysqld.log
初始化设置
mysql_secure_installation 输入的密码是Aa123456.
依次输入 yyynyy
测试连接:mysql -uroot -p[密码]
创建远程连接:
CREATE USER 'root'@'%' IDENTIFIED BY 'Aa123456.';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
开放防火墙
firewall-cmd --zone=public --add-service=mysql --permanent
或者开放 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 让规则立即生效
firewall-cmd --reload
firewall-cmd --list-all
(node1)部署redis
更新dnf相关软件包 【可选】 时间较长 预计20分钟
dnf update -y
# 安装redis操作
dnf install redis -y
修改配置:
vim /etc/redis.conf
# 83行附件, 修改为 * -::* 任意的服务都可以连接redis服务
bind 0.0.0.0
#908行附近: 打开requirepass,设置其密码为123456 【可选】
requirepass 123456
如果找不到, 请在794行,添加即可
#794 行附近: 添加 requirepass,设置其密码为123456 【可选】 如果不涉及密码, 访问redis不需要输入密码,建议设置,因为项目中配置有对应密码
requirepass 123456
启动:
systemctl start redis
systemctl enable redis
查看状态:
systemctl status redis
测试连接状态:
redis-cli 【-a 密码】
或
redis-cli 命令 进入客户端, 然后输入 auth 123456
退出客户端: quit 或 ctrl +d
开启防火墙:
firewall-cmd --add-service=redis --permanent
或
firewall-cmd --add-port=6379/tcp --add-port=6379/udp --permanent
重新加载:
firewall-cmd --reload
创建阿里云oss服务获取 accesskey:
创建百度千帆大模型 访问key
前端部署
安装项目依赖文件,从阿里云拉取
npm install --registry=https://registry.npmmirror.com
启动
npm run dev
部署架构
| 服务器节点 | 数据库服务 | redis服务 | Nginx服务 | Tomcat | DNS服务 | 日志服务 | 时间同步服务器 | |
|---|---|---|---|---|---|---|---|---|
| node1(192.168.130.100) node1.shili.cn | √ | √ | √ |
node3同步 | ||||
| node2(192.168.130.101) | √(安装JDK) |
node3同步 | ||||||
| node3(192.168.130.102) | √ |
√ |
√ |
三节点ssh配置
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
ssh-copy-id root@192.168.88.101
ssh-copy-id root@192.168.130.101
ssh-copy-id root@192.168.130.102
cat .ssh/authorized_keys
ssh root@192.168.130.101 -o StrictHostKeyChecking=no
ssh脚本
#!/bin/bash
#1.定义要免密的服务器地址
SERVERS=("192.168.130.101" "192.168.130.102" "192.168.130.100")
USER=root
#2.判断系统中是否生成秘钥对
[ ! -f "$HOME/.ssh/id_rsa" ] && ssh-keygen -t rsa -N "" -f "$HOME/.ssh/id_rsa"
#3.使用循环遍历所有服务器
for SERVER in "${SERVERS[@]}"
do
echo "配置对 $SERVER 服务器进行免密"
ssh-copy-id -o StrictHostKeyChecking=no "$USER@$SERVER"
done
关闭selinux防火墙
vim /etc/selinux/config
一步到位
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
设置ntp时间同步
vim /etc/chrony.conf
pool 2.centos.pool.ntp.org iburst
pool ntp.aliyun.com iburst
pool ntp.tencent.com iburst
# 允许130网段客户端, 向时间同步服务器同步时间
#allow 192.168.0.0/16
allow 192.168.130.0/24
# 打开最后一行 详细日志记录
log measurements statistics tracking
重启
systemctl restart chronyd
防火墙放行:
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
firewall-cmd --list-all
vim /etc/chrony.conf
pool 192.168.130.102 iburst
# node1 和 node2都要执行
systemctl restart chronyd
测试
chronyc sources
安装mysql
上面已经在node1中安装mysql8
(node2)安装jdk11
mkdir -p /export/software
cd /export/software
tar -xzf openjdk-11.0.0.2_linux-x64.tar.gz -C /opt/
cd /opt/
vim /etc/profile
在文件的尾部添加:
# JAVA_HOME
export JAVA_HOME=/opt/jdk-11.0.0.2
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
source /etc/profile
校验:
java -version
打包 jar包部署(node2)
上传jar包
mkdir -p /opt/zzyl_project
运行
cd /opt/zzyl_project
java -jar zzyl-admin.jar
开放 9000 端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
后台运行:
nohup java -jar zzyl-admin.jar 2>&1 >/dev/null &
校验:
jps : 查看Java的进程
ps -ef | grep java 查看java进程
基于tomcat启动
将源码打包成war包上传
cd /export/software/
tar -xzf apache-tomcat-9.0.97.tar.gz -C /opt/
cd /opt/
启动tomcat
cd /opt/apache-tomcat-9.0.97/bin
./startup.sh
开放 8080 端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 让规则立即生效
firewall-cmd --reload
验证防火墙规则
firewall-cmd --list-all
将打包好的war包上传至webapps目录下
启动tomcat 这里访问是默认tomcat端口8080
监控日志
tail -100f logs/catalina.out
node3部署nginx
dnf install nginx -y
systemctl start nginx
systemctl enable nginx
# 查看状态信息
systemctl status nginx
开启防火墙:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
# 重新加载规则信息
firewall-cmd --reload
# 查看规则信息
firewall-cmd --list-all
nginx目录介绍
•/etc/nginx/ 目录 【重要】
这是 Nginx 的 主配置目录,存放所有与 Nginx 配置相关的文件
•/var/www/目录 【重要】
默认情况下,Nginx 的网站文件(例如 HTML、图片等)通常存放在这个目录下
•/usr/share/nginx/目录
这个目录通常包含与 Nginx 程序相关的文件
/usr/share/nginx/html/ :
Nginx 默认的网页目录,通常安装时会有一个默认的 index.html 文件,用来验证 Nginx 是否成功安装。
var/log/nginx/目录 【重要】
Nginx 会把日志文件存放在这个目录下。日志文件帮助你监控 Nginx 的运行情况,排查问题
(node3)前端程序打包
该命令在package.json文件中可以找到
npm run build:prod
创建www目录:
mkdir -p /var/www/
将打包好的dist上传到此目录下
配置nginx
vim /etc/nginx/nginx.conf
# 添加相关内容:
# 在HTTP的目录下, 添加以下三个add_header CORS 配置
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE";
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";
作用:这几行配置用于设置 跨域资源共享(CORS),
它们在 Nginx 中用来允许其他域名访问你的资源。CORS 是一种机制,
允许通过浏览器发起跨域 HTTP 请求,常用于 Web 应用与不同域名的 API 交互时,
解决浏览器的同源策略限制
在server中, 添加以下三行内容, 删除原有的server_name 和root
client_max_body_size 60m; # 限制客户端请求体的最大大小。
client_body_buffer_size 512k; # 设置 Nginx 用于缓冲客户端请求体的内存大小。
client_header_buffer_size 2k; # 设置 Nginx 用于缓冲请求头的内存大小。
说明
这些配置项与 Nginx 处理客户端请求的请求体大小、
请求头缓冲区等相关,主要用于控制 Nginx 在处理上传文件、请求体内容和请求头时的行为。
在server中,继续添加以下内容, 注意根据图片 确定放置位置
# 处理 静态页面
location / {
root /var/www/dist;
index index.html index.htm;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
try_files $uri $uri/ /index.html;
}
# 处理反向代理
location /prod-api/ {
proxy_pass http://192.168.130.101:8080/zzyl-admin/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
重启 Nginx:
systemctl restart nginx
或
重新加载 Nginx 配置(不停止服务):
nginx -s reload
node3安装配置dns服务器
node3:
后台管理系统域名 Nginx: www.zzyl-itcast.cn 或 zzyl-itcast.cn
DNS服务器域名: ns.zzyl-itcast.cn
时间同步服务器域名: ntp.zzyl-itcast.cn
顶级域名:
zzyl-itcast.cn
子域名: www ns ntp
www.zzyl-itcast.cn : 192.168.130.102
zzyl-itcast.cn : 192.168.130.102
ns.zzyl-itcast.cn : 192.168.130.102
ntp.zzyl-itcast.cn : 192.168.130.102
在node3配置DNS服务器, 完成最终解析操作, 同时windows连接服务器的DNS, 实现域名访问
node1日志服务
要求在node1节点中,单独挂载一块磁盘, 用于存储中州养老的日志数据,同时支持后续扩容使用
初始磁盘大小: 10GB
采用LVM方案
挂载点: /mnt/zzyl_logs
日志需求说明:
日志:
Nginx node3的access.log和error.log: 开启日志轮替方案, 每日轮替一次,至少保留6个版本【轮替文件时存在的, 只需要将版本调整为6即可】
后台系统 node2: /home/ruoyi/logs/ 已自动有轮替,无需配置
sys-info.2024-12-28.log
sys-user.2024-12-28.log
sys-error.2024-12-28.log
对日志,进行周期性同步, 每日凌晨1点, 准时同步之前(不含当天日志)的 Nginx和后台系统日志到/mnt/zzyl_logs
注意: 涉及到名字的命名, 要求见名知意即可,可以任意定义
需求: 只能同步上一天及其之前的数据
数据同步:
数据源:
node2: /home/ruoyi/logs/ 有三个日志文件
sys-info.2024-12-28.log
sys-user.2024-12-28.log
sys-error.2024-12-28.log
node3: /var/log/nginx 有二个日志文件
access.log-20250331
error.log-20250331
目的地:
node1: /mnt/zzyl_logs
总结 先分区/不分区 -> 然后 pv vg lv -》格式化lv -》 挂载lv -》永久挂载 写入 /etc/fstab
先分区
sudo fdisk /dev/sdb
n → p → 1 → 回车(默认起始)→ 回车(使用全部空间)
t → 8e # 设置分区类型为 "Linux LVM"
w # 保存并退出
lsblk
# 应看到 /dev/sdb1
创建pv
# 如果你做了分区
sudo pvcreate /dev/sdb1
# 如果你没分区(直接用整盘)
# sudo pvcreate /dev/sdb
sudo pvs
# 输出应包含 /dev/sdb1,大小 ~10G
创建vg
# 使用分区
sudo vgcreate vg_logs /dev/sdb1
# 或使用整盘
# sudo vgcreate vg_logs /dev/sdb
sudo vgs
# 应显示 VG: vg_logs, Size: 10.00g
创建lv
sudo lvcreate -l 100%FREE -n lv_logs vg_logs
sudo lvs
# 应显示 LV: lv_logs, VG: vg_logs, LSize: 10.00g
格式化逻辑卷
# 推荐 XFS(适合大文件、日志场景)
sudo mkfs.xfs /dev/vg_logs/lv_logs
# 或使用 ext4
# sudo mkfs.ext4 /dev/vg_logs/lv_logs
创建挂载点挂载
sudo mkdir -p /mnt/zzyl_logs
sudo mount /dev/vg_logs/lv_logs /mnt/zzyl_logs
验证挂载:
df -hT /mnt/zzyl_logs
# 应显示 xfs/ext4 文件系统,容量 ~10G
永久挂载:
echo '/dev/vg_logs/lv_logs /mnt/zzyl_logs xfs defaults 0 0' | sudo tee -a /etc/fstab
lvm挂载硬盘脚本
#!/bin/bash
#=============================================================
# 脚本名称: setup_lvm_logs.sh
# 功能: 自动为新硬盘创建 LVM 并挂载到 /mnt/zzyl_logs
# 作者: Assistant
# 日期: 2026-01-02
# 改进: 自动检测并安装 lvm2 包,支持主流 Linux 发行版
#=============================================================
set -e
DEVICE=""
FS_TYPE="xfs"
MOUNT_POINT="/mnt/zzyl_logs"
VG_NAME="vg_logs"
LV_NAME="lv_logs"
log() {
echo -e "\033[32m[INFO]\033[0m $1"
}
warn() {
echo -e "\033[33m[WARN]\033[0m $1"
}
error() {
echo -e "\033[31m[ERROR]\033[0m $1" >&2
exit 1
}
if [[ $EUID -ne 0 ]]; then
error "请使用 root 权限运行此脚本 (sudo)"
fi
# ========================
# 新增:自动安装 LVM2
# ========================
install_lvm2() {
log "检测 LVM 工具是否已安装..."
if command -v pvcreate &> /dev/null; then
log "LVM 工具已安装,跳过安装步骤。"
return 0
fi
log "LVM 工具未安装,正在自动安装 lvm2..."
# 检测发行版
if command -v apt-get &> /dev/null; then
# Debian/Ubuntu
apt-get update -y
apt-get install -y lvm2
elif command -v yum &> /dev/null; then
# CentOS/RHEL 7
yum install -y lvm2
elif command -v dnf &> /dev/null; then
# Fedora/CentOS/RHEL 8+
dnf install -y lvm2
else
error "不支持的包管理器,请手动安装 lvm2 后重试。"
fi
# 验证安装
if ! command -v pvcreate &> /dev/null; then
error "lvm2 安装失败,请手动检查网络或软件源。"
fi
log "lvm2 安装成功!"
}
# 执行 LVM 安装
install_lvm2
# ========================
# 原有逻辑(参数解析等)
# ========================
if [[ $# -ge 1 ]]; then
DEVICE="$1"
if [[ ! -b "$DEVICE" ]]; then
error "设备 $DEVICE 不存在或不是块设备"
fi
fi
if [[ $# -ge 2 ]]; then
FS_TYPE="$2"
if [[ "$FS_TYPE" != "xfs" && "$FS_TYPE" != "ext4" ]]; then
error "文件系统类型必须是 'xfs' 或 'ext4'"
fi
fi
# 自动检测新硬盘
if [[ -z "$DEVICE" ]]; then
log "正在自动检测新硬盘..."
for disk in /dev/sd[b-z] /dev/vd[b-z]; do
if [[ -b "$disk" ]]; then
if ! lsblk -nro MOUNTPOINT "$disk" | grep -q . && ! lsblk -nro NAME "$disk" | grep -q "[0-9]$"; then
DEVICE="$disk"
log "检测到新硬盘: $DEVICE"
break
fi
fi
done
[[ -z "$DEVICE" ]] && error "未找到可用的新硬盘,请手动指定设备路径(如 /dev/sdb)"
fi
read -p "将对设备 $DEVICE 执行 LVM 初始化操作,确认继续? (y/N): " -n 1 -r
echo
[[ ! $REPLY =~ ^[Yy]$ ]] && exit 0
# 安装文件系统工具(如果需要)
if [[ "$FS_TYPE" == "xfs" ]]; then
if ! command -v mkfs.xfs &> /dev/null; then
log "检测到 XFS 工具未安装,正在安装..."
if command -v apt-get &> /dev/null; then
apt-get install -y xfsprogs
elif command -v yum &> /dev/null || command -v dnf &> /dev/null; then
(yum install -y xfsprogs || dnf install -y xfsprogs)
fi
fi
elif [[ "$FS_TYPE" == "ext4" ]]; then
if ! command -v mkfs.ext4 &> /dev/null; then
log "检测到 ext4 工具未安装,正在安装 e2fsprogs..."
if command -v apt-get &> /dev/null; then
apt-get install -y e2fsprogs
elif command -v yum &> /dev/null || command -v dnf &> /dev/null; then
(yum install -y e2fsprogs || dnf install -y e2fsprogs)
fi
fi
fi
# 步骤 1: 创建 LVM 分区
log "1. 对 $DEVICE 创建 LVM 分区..."
parted -s "$DEVICE" mklabel gpt mkpart primary 0% 100% set 1 lvm on
PARTITION="${DEVICE}1"
sleep 2
if [[ ! -b "$PARTITION" ]]; then
partprobe "$DEVICE" 2>/dev/null || true
sleep 2
fi
[[ ! -b "$PARTITION" ]] && error "分区 $PARTITION 未创建成功"
# 步骤 2-7: LVM + 挂载(保持不变)
log "2. 创建物理卷 (PV)..."
pvcreate -ff -y "$PARTITION" >/dev/null
log "3. 创建卷组 (VG: $VG_NAME)..."
vgcreate "$VG_NAME" "$PARTITION" >/dev/null
log "4. 创建逻辑卷 (LV: $LV_NAME)..."
lvcreate -l 100%FREE -n "$LV_NAME" "$VG_NAME" >/dev/null
LV_PATH="/dev/$VG_NAME/$LV_NAME"
[[ ! -b "$LV_PATH" ]] && error "逻辑卷 $LV_PATH 未创建成功"
log "5. 格式化为 $FS_TYPE 文件系统..."
if [[ "$FS_TYPE" == "xfs" ]]; then
mkfs.xfs -f "$LV_PATH" >/dev/null
else
mkfs.ext4 -F "$LV_PATH" >/dev/null
fi
log "6. 创建挂载点并挂载..."
mkdir -p "$MOUNT_POINT"
mount "$LV_PATH" "$MOUNT_POINT"
log "7. 配置 /etc/fstab 开机自动挂载..."
UUID=$(blkid -s UUID -o value "$LV_PATH")
[[ -z "$UUID" ]] && error "无法获取逻辑卷 UUID"
cp /etc/fstab /etc/fstab.bak.$(date +%Y%m%d)
echo "UUID=$UUID $MOUNT_POINT $FS_TYPE defaults 0 0" >> /etc/fstab
if ! mount -a 2>/dev/null; then
error "fstab 配置有误,请检查 /etc/fstab"
fi
# 输出结果
log "✅ LVM 挂载完成!"
echo "----------------------------------------"
echo "挂载点: $MOUNT_POINT"
echo "文件系统: $FS_TYPE"
echo "逻辑卷: $LV_PATH"
echo "卷组: $VG_NAME"
echo "设备: $DEVICE → $PARTITION"
echo "容量: $(df -h "$MOUNT_POINT" | awk 'NR==2 {print $2}')"
echo "fstab 备份: /etc/fstab.bak.$(date +%Y%m%d)"
echo "----------------------------------------"
# ========================
# 新增:验证信息打印
# ========================
log "🔍 正在执行挂载验证..."
if mountpoint -q "$MOUNT_POINT"; then
log "✅ 挂载点 $MOUNT_POINT 已正确挂载。"
else
error "❌ 挂载点 $MOUNT_POINT 未挂载!请手动检查。"
fi
if [[ $(df -h "$MOUNT_POINT" | wc -l) -ge 2 ]]; then
log "✅ 文件系统容量已识别。"
else
warn "⚠️ df 未显示挂载点容量,可能存在异常。"
fi
# 检查 fstab 是否包含条目
if grep -q "UUID=$UUID" /etc/fstab; then
log "✅ /etc/fstab 已正确配置自动挂载。"
else
warn "⚠️ /etc/fstab 中未找到 UUID 条目,请手动检查。"
fi
log "📌 验证命令参考:"
echo " # 查看挂载情况"
echo " df -h $MOUNT_POINT"
echo ""
echo " # 查看块设备结构"
echo " lsblk"
echo ""
echo " # 查看 LVM 信息"
echo " pvs && echo '---' && vgs && echo '---' && lvs"
echo ""
echo " # 测试写入权限"
echo " touch $MOUNT_POINT/test_write && rm -f $MOUNT_POINT/test_write && echo '✅ 写入测试通过'"
sudo chmod +x /root/setup_lvm_logs.sh
卸载清除lvm分区脚本
#!/bin/bash
#=============================================================
# 脚本名称: cleanup_lvm_logs.sh
# 功能: 安全卸载并彻底清理 LVM 配置,恢复硬盘原始状态
# 作者: Assistant
# 日期: 2026-01-02
#=============================================================
set -e
MOUNT_POINT="/mnt/zzyl_logs"
VG_NAME="vg_logs"
DEVICE="" # 自动检测
log() { echo -e "\033[32m[INFO]\033[0m $1"; }
error() { echo -e "\033[31m[ERROR]\033[0m $1" >&2; exit 1; }
if [[ $EUID -ne 0 ]]; then
error "请使用 root 权限运行 (sudo)"
fi
# 1. 卸载挂载点
if mountpoint -q "$MOUNT_POINT"; then
log "1. 卸载挂载点 $MOUNT_POINT..."
umount "$MOUNT_POINT"
rmdir "$MOUNT_POINT" 2>/dev/null || true
else
log "1. 挂载点 $MOUNT_POINT 未挂载,跳过卸载。"
fi
# 2. 从 /etc/fstab 移除条目
if grep -q "$MOUNT_POINT" /etc/fstab; then
log "2. 从 /etc/fstab 中移除自动挂载配置..."
sed -i "/$MOUNT_POINT/d" /etc/fstab
log " 已清理 fstab。"
fi
# 3. 停用并删除逻辑卷
if lvs --noheadings -o lv_name,vg_name 2>/dev/null | grep -q "lv_logs.*$VG_NAME"; then
log "3. 删除逻辑卷 lv_logs..."
lvremove -f "/dev/$VG_NAME/lv_logs"
fi
# 4. 删除卷组
if vgs --noheadings -o vg_name 2>/dev/null | grep -q "^ *$VG_NAME *$"; then
log "4. 删除卷组 $VG_NAME..."
vgremove -f "$VG_NAME"
fi
# 5. 清除物理卷标签
# 先尝试从 LVM 获取 PV 设备
PV_DEVICE=$(pvs --noheadings -o pv_name,vg_name 2>/dev/null | awk "/$VG_NAME/ {print \$1}" | head -1)
if [[ -z "$PV_DEVICE" ]]; then
# 回退:尝试常见设备名
for dev in /dev/sd[b-z]1 /dev/vd[b-z]1; do
if [[ -b "$dev" ]] && pvs "$dev" 2>/dev/null | grep -q "$VG_NAME"; then
PV_DEVICE="$dev"
break
fi
done
fi
if [[ -n "$PV_DEVICE" ]]; then
log "5. 清除物理卷标签: $PV_DEVICE..."
pvremove -ff -y "$PV_DEVICE"
DEVICE="${PV_DEVICE%1}" # /dev/sdb1 → /dev/sdb
else
log "5. 未找到关联的物理卷,跳过 pvremove。"
fi
# 6. 彻底擦除分区表(恢复硬盘为“全新”状态)
if [[ -n "$DEVICE" && -b "$DEVICE" ]]; then
log "6. 擦除硬盘分区表: $DEVICE..."
wipefs -a "$DEVICE" # 清除所有文件系统/分区表签名
dd if=/dev/zero of="$DEVICE" bs=1M count=10 oflag=direct 2>/dev/null || true
log "✅ 硬盘 $DEVICE 已恢复为原始状态,可重新使用!"
else
warn() { echo -e "\033[33m[WARN]\033[0m 无法确定底层硬盘设备,请手动执行 wipefs/dd。"; }
warn
fi
# 7. 可选:重启 LVM 服务(某些系统需要)
if systemctl is-active --quiet lvm2-lvmetad; then
log "7. 重启 LVM 服务..."
systemctl restart lvm2-lvmetad 2>/dev/null || true
fi
log "🎉 LVM 清理完成!硬盘已释放。"
dnf install logrotate
配置:
sudo tee /etc/logrotate.d/nginx << 'EOF'
/var/log/nginx/access.log
/var/log/nginx/error.log
{
daily
missingok
rotate 6
compress
delaycompress
notifempty
create 0640 nginx nginx
sharedscripts
dateext
dateformat -%Y%m%d
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
endscript
}
EOF
手动测试:
sudo logrotate -f /etc/logrotate.d/nginx
ls -lh /var/log/nginx/
命令操作:
同步远端 node2: 在node1执行同步命令
rsync -avz --delete 'root@node2:/home/ruoyi/logs/sys-*.log' /mnt/zzyl_logs
同步远端 node3: 在node1执行同步命令
rsync -avz --delete 'root@node3:/var/log/nginx/*.log-*' /mnt/zzyl_logs
配置定时操作: 仅在node1即可 每日凌晨1点
编写定时器: crontab -e
输入 i 进入插入模式:
添加以下二行内容:
0 1 * * * /usr/bin/rsync -avz --delete root@192.168.130.101:/home/ruoyi/logs/sys-*.*.log /mnt/zzyl_logs
0 1 * * * /usr/bin/rsync -avz --delete root@192.168.130.102:/var/log/nginx/*.log-* /mnt/zzyl_logs

浙公网安备 33010602011771号