[日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割(脚本)

本文介绍了一个Nginx日志轮转及压缩的解决方案,包括配置logrotate来实现日志文件的每日分割、保留指定数量的备份及通过shell脚本进一步将旧日志文件压缩归档,以节省存储空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://bbs.linuxtone.org/thread-9070-1-1.html


logrotate日志分割配置:

# cat /etc/logrotate.d/nginx
/data/nginx_logs/*.access_log         #nginx日志所在目录
{
nocompress                                     #不对日志文件进行转储压缩
daily                                                 #指定转储周期为每天
copytruncate                                   #用于还在打开中的日志文件,把当前日志备份并截断
create                                              #建立新的日志文件
ifempty                                            #即使是空文件也转储
olddir /data/nginx_logs/days            #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
rotate 0                                           #指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5个备份
}


#####################################################################
日志分割脚本:
#!/bin/bash
#创建转储日志压缩存放目录
mkdir -p /data/nginx_logs/days
#手工对nginx日志进行切割转换
/usr/sbin/logrotate -vf /etc/logrotate.d/nginx
#当前时间
time=$(date -d "yesterday" +"%Y-%m-%d")
#进入转储日志存放目录
cd /data/nginx_logs/days
#对目录中的转储日志文件的文件名进行统一转换
for i in $(ls ./ | grep "^\(.*\)\.[[:digit:]]$")
do
mv ${i} ./$(echo ${i}|sed -n 's/^\(.*\)\.\([[:digit:]]\)$/\1/p')-$(echo $time)
done
#对转储的日志文件进行压缩存放,并删除原有转储的日志文件,只保存压缩后的日志文件。以节约存储空间
for i in $(ls ./ | grep "^\(.*\)\-\([[:digit:]-]\+\)$")
do
tar jcvf ${i}.bz2 ./${i}
rm -rf ./${i}
done
#只保留最近7天的压缩转储日志文件
find /data/nginx_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \;

######################################################
#给脚本附上执行权限,放到crontab里执行
#logrotate

0 0 * * * /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1



<think>好的,我现在需要回答用户关于如何自行维护部署在阿里云服务器上的小程序的问题。用户提到了使用SpringBoot后端,并且希望了解维护方法。首先,我要回顾用户提供的引用内容,看看有哪些相关信息可以利用。 根据引用[1],用户部署过SpringBoot项目到阿里云服务器,并且创建了服务器实例。引用[3]和[4]提到使用SpringBoot作为微信小程序的后端,并提到了环境搭建和部署流程。引用[5]则涉及将后端代码部署到阿里云,并配置HTTPS。这些信息都是相关的,应该整合到回答中。 接下来,我需要确定自行维护的主要方面。通常维护包括代码更新、服务器监控、日志管理、安全加固、备份恢复等。用户可能关心如何更新代码到服务器,如何监控运行状态,如何处理日志,以及如何确保安全性。 从引用[1]和[5]来看,部署过程涉及到项目打包、上传到服务器,以及使用Nginx配置。因此,维护时可能需要重复这些步骤来更新代码。需要详细说明如何通过Git或SCP上传新代码,然后重启服务。 监控部分,可以提到使用阿里云自带的监控工具,如云监控,以及使用Linux命令如top、htop等。日志管理方面,SpringBoot的日志配置和日志轮转工具如logrotate可能适用。 安全方面,引用[5]提到了SSL证书配置,因此需要维护证书的更新。此外,防火墙设置(如iptables或阿里云安全组)和定期更新系统及软件包也是关键。 备份和回滚方面,引用[3]和[4]提到了项目部署,所以可能需要自动化脚本使用Docker容器来方便版本管理和回滚。 最后,测试与自动化部分,可以建议用户设置CI/CD管道,如使用Jenkins或GitHub Actions来自动化部署流程,减少人为错误。 需要确保回答结构清晰,分点说明每个维护步骤,并引用提供的参考资料。同时,生成的相关问题要围绕维护的不同方面展开,帮助用户深入了解更多细节。</think>### 自行维护部署在阿里云服务器上的小程序方法 #### 1. **代码更新与部署** - **本地开发与测试** 在本地使用IDE(如IntelliJ IDEA)修改SpringBoot项目代码后,通过`mvn clean package`生成新的`jar`/`war`包。 ```bash # 示例打包命令 mvn clean package -DskipTests ``` - **上传代码到服务器** 通过`scp`或SFTP工具(如FileZilla)将打包文件上传至服务器指定目录(如`/home/project`)[^1][^5]。 - **重启服务** 使用`systemctl`或脚本管理SpringBoot服务: ```bash # 停止旧服务 systemctl stop myapp.service # 替换新文件 cp /home/project/myapp.jar /opt/myapp/ # 启动新服务 systemctl start myapp.service ``` #### 2. **服务器监控与日志管理** - **资源监控** 使用阿里云自带的**云监控**查看CPU、内存、磁盘使用率,设置阈值告警[^1][^3]。 通过`top`、`htop`或`nmon`实时监控服务器状态。 - **日志分析** SpringBoot默认日志路径为`/var/log/springboot-app.log`,可通过`tail -f`实时查看: ```bash tail -f /var/log/springboot-app.log ``` 使用`logrotate`配置日志轮转,避免日志文件过大。 #### 3. **安全维护** - **防火墙与安全组** 配置阿里云安全组规则,仅开放必要端口(如HTTPS的443、SSH的22)。 服务器本地使用`iptables`/`ufw`限制非法访问: ```bash ufw allow 443/tcp ufw enable ``` - **SSL证书更新** 若使用Let's Encrypt免费证书,定期执行`certbot renew`更新证书。 #### 4. **备份与回滚** - **数据备份** 定期备份数据库(如MySQL)和项目代码至OSS或本地存储: ```bash mysqldump -u root -p mydb > /backup/mydb_$(date +%F).sql ``` - **版本回滚** 保留历史版本的`jar`包,通过修改服务启动路径快速回退: ```bash systemctl stop myapp.service ln -sf /opt/myapp/v1.2.jar /opt/myapp/current.jar systemctl start myapp.service ``` #### 5. **依赖管理与环境维护** - **Java环境更新** 使用`yum`或手动安装新版JDK,并更新环境变量: ```bash export JAVA_HOME=/usr/lib/jvm/java-11-openjdk ``` - **Nginx配置优化** 检查`/etc/nginx/nginx.conf`中的反向代理设置,确保HTTPS转发正确。 #### 6. **自动化与持续集成** - **Git钩子与CI/CD** 配置GitLab CI或Jenkins,实现代码提交后自动构建、测试、部署[^4]。 - **容器化部署(可选)** 使用Docker打包SpringBoot应用,简化环境一致性管理: ```dockerfile FROM openjdk:11 COPY target/myapp.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值