任务清单
项目环境搭建
- 可以使用iventoy网启安装3台centos7.9服务器
- 管理员模式启动iventoy:
-
-
-
- 【剩下两台机子以此类推】
- 按照规划,最小化摆设体系,
- 更换yum源:
- 删除本来yum源:
- 创建新的:
-
- 关闭防火墙
设置服务器名字:
- 禁用SELinux
-
- 确保可以大概联网。
- 摆设静态IP:
安装所需软件:
- yum install vim tree tar net-tools rsync nfs-utils -y
复制代码- yum install epel-release -y
复制代码 摆设网站:
- vim /etc/nginx/nginx.conf
复制代码
启动nginx:
测试:
摆设nfs01:
安装须要软件:
- yum install vim tree tar net-tools rsync -y
复制代码
创建共享文件包:
测试:
- echo "welcome to www.openlab.com" > /nfsfile/readme
复制代码
启动软件:
【牢记启动顺序不可乱】
回到web01:
创建当地挂载目录:
挂载:【堕落查看nfs的设定】
- mount -t nfs 192.168.12.201:/nfsfile /web_nfs
复制代码 测试:
或者:
backup摆设:
安装须要软件:
- yum install vim tree tar net-tools rsync mailx -y
复制代码
修改rsync软件的配置:
删掉原有,直接粘贴:
- uid = rsync # 用户
- gid = rsync # 组
- use chroot = no # 程序安全设置
- max connections = 200 # 客户端连接数
- timeout = 300 # 超时时间
- pid file = /var/run/rsyncd.pid # 进程号文件位置
- lock file = /var/run/rsync.lock # 进程锁
- log file = /var/log/rsyncd.log # 日志文件
- fake super = yes # 无需rsync以root身份运行,允许接受数据
- [backup]
- path = /backup # 目录
- ignore errors # 有错误时忽略
- read only = false # 可读可写
- list = false # 阻止远程列表
- hosts allow = 192.168.88.0/24 # 允许IP
- hosts deny = 0.0.0.0/32 # 禁止IP
- auth users = rsync # 用于认证的账户
- secrets file = /etc/rsync.password # 存放用户和密码的文件
复制代码 我的:
- uid = rsync
- gid = rsync
- use chroot = no
- max connections = 200
- timeout = 300
- pid file = /var/run/rsyncd.pid
- lock file = /var/run/rsync.lock
- log file = /var/log/rsyncd.log fake super = yes
- [backup]
- path = /backup
- ignore errors
- read only = false
- list = false
- hosts allow = 192.168.12.0/24
- hosts deny = 0.0.0.0/32
- auth users = rsync
- secrets file = /etc/rsync.password
- ~
复制代码 账户的新建和备份目录新建:
- useradd -M -s /sbin/nologin rsync
复制代码
递归:
启动并开机启动:
- systemctl enable --now rsyncd
复制代码
检查:
密码配置:
建立密码文件:
- echo "rsync:rsync123" > /etc/rsync.password
复制代码
权限:
- chmod 600 /etc/rsync.password
复制代码
配置备份脚本
web01:
新建备份目录:
新建备份脚本:
- vim /server/scripts/backup.sh
复制代码- #!/bin/bash
- # Date:2025-2-19
- # Author:Andy
- # Mail:andy@126.com
- # Function: Regularly backup data from web servers
- # Version: V1.0
- Date=$(date +%F_Week0%w) # 定义时间方式
- Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}') # 获取IP,注意网卡名
- Backup_Dir="/backup/" # 本地备份路径
- Backup_Server_IP=192.168.12.202 # 备份服务器的IP
- # 创建指定目录和IP的目录
- [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
- # 输出提示信息
- echo ${Date} ${Host_IP} start backup ......
- Date=$(date +%F_Week0%w) # 定义时间方式
- Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}') # 获取IP,注意网卡名
- Backup_Dir="/backup/" # 本地备份路径
- Backup_Server_IP=192.168.12.202 # 备份服务器的IP
- # 创建指定目录和IP的目录
- [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
- # 输出提示信息
- echo ${Date} ${Host_IP} start backup ......
- # 把备份推送到备份服务器
- rsync -az $Backup_Dir rsync@${Backup_Server_IP}::backup --password-file=/etc/rsync.password
- # 删除7天以前的所有本地备份数据
- find ${Backup_Dir:-/tmp} -type f -name "*.tar.gz" -a -name "*flag*" -mtime +7|xargs rm -f
- echo "Local backup successful, the backup files have been pushed to the backup server"
- [root@web01 ~]# vim /server/scripts/backup.sh
- [root@web01 ~]# cat /server/scripts/backup.sh
- #!/bin/bash
- # Date:2025-4-11
- # Author:Andy
- # Mail:andy@126.com
- # Function: Regularly backup data from web servers
- # Version: V1.0
- Date=$(date +%F_Week0%w) # 定义时间方式
- Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}') # 获取IP,注意网卡名
- Backup_Dir="/backup/" # 本地备份路径
- Backup_Server_IP=192.168.12.202 # 备份服务器的IP
- # 创建指定目录和IP的目录
- [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
- # 输出提示信息
- echo ${Date} ${Host_IP} start backup ......
- Date=$(date +%F_Week0%w) # 定义时间方式
- Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}') # 获取IP,注意网卡名
- Backup_Dir="/backup/" # 本地备份路径
- Backup_Server_IP=192.168.12.202 # 备份服务器的IP
- # 创建指定目录和IP的目录
- [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
- # 输出提示信息
- echo ${Date} ${Host_IP} start backup ......
- # 把备份推送到备份服务器
- rsync -az $Backup_Dir rsync@${Backup_Server_IP}::backup --password-file=/etc/rsync.password
- # 删除7天以前的所有本地备份数据
- find ${Backup_Dir:-/tmp} -type f -name "*.tar.gz" -a -name "*flag*" -mtime +7|xargs rm -f
- echo "Local backup successful, the backup files have been pushed to the backup server"
复制代码 客户端建立认证的文件密码如下:
权限:
- chmod 600 /etc/rsync.password
复制代码 测试:
- bash /server/scripts/backup.sh
复制代码
backup:
nfs01同上
设置定时任务:
web01下载软件:
查看crontabs的状态:【一样平常体系中会自带】
设置定时任务:
web01:
编辑crontab文档:
nfs01:
同上:
backup:
同上:
邮件设置backup:
创建目录:
【
- 强制创建多级目录,忽略已存在的情况。
- 这是脚本和一样平常操纵中的最佳实践,能有效避免路径缺失导致的错误。
】
进入设置文档:
- vim /server/scripts/backup.sh
复制代码- #!/bin/bash
- # Date:2025-4-12
- # Author:Andy
- # Mail:andy@126.com
- # Function: Verify the integrity of backup files
- # Version: V1.0
- Date=$(date +%F_Week0%w)
- Backup_Dir="/backup/"
- Check_Log="/tmp/bak.log_$(date +%F)"
- Admin_Mail=2701964360@qq.com
- find $Backup_Dir -type f -name "${Date}.flag"|xargs md5sum -c >> $Check_Log
- if [ -n "cat $Check_Log" ]
- then
- mail -s "$Date backup data info" $Admin_Mail < $Check_Log
- else
- echo "$Date backup data error,pls check it." > $Check_Log
- mail -s "$Date backup data info" $Admin_Mail < $Check_Log
- fi
- cp $Check_Log{,.ori} && > $Check_Log
复制代码 配置邮件告警功能:
backup安装发邮件的软件:
backup配置QQ邮箱ssl证书:
- echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
- certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
- certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
- certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
复制代码 返回该内容为成功:
【Notice: Trust flag u is set automatically if the private key is present.】
配置邮件文件:
修改文档:
- set from= @qq.com
- set smtp=smtps://smtp.qq.com:465 # ssl端口默认465
- set smtp-auth-user= @qq.com
- set smtp-auth-password= # 授权码
- set smtp-auth=login
- set nss-config-dir=/root/.certs/ # 设置证书路径
- set ssl-verify=ignore # 启用加密ssl传输in
复制代码
授权码:
QQ的授权码申请:
登录QQ邮箱--->打开设置--->进入账号与安全--->选择安全设置----如图选择生成授权码:
backup测试邮件:
- echo "testmail" | mail -s "testmail" @qq.com
复制代码
测试成功:
backup发送邮件:
- bash /server/scripts/send_mail.sh
复制代码 如图所示,则项目成功:
易堕落点:
Web01的备份数据没有备份成功,在backup和web01中的存储备份的文件中没有应出现的数据
如图所示:
办理方案:
发现备份脚本有重复信息,删除备份脚本内容,重新输入并启动。备份文件中出现内容,备份成功。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |