这个脚本备份网站
wget --mirror -t 2 -S -N -k https://blog.itsse.cn -P /home/wwwroot/public/
1.使用wget命令,下载一份网站的镜像(网站上公开的所有内容...
2.得到一份静态镜像(里面有html/jpg/...;
3.其中的参数-k为将链接转化为本地路径;
4.其中的参数-P为备份保存路径,届时会自动创建文件夹,文件名字将以网站名字命名;
5.最终得到 /home/wwwroot/public/blog.itsse.cn;
使用静态镜像
修改nginx配置路径以使用静态镜像;
index index.html index.htm index.php default.html default.htm default.php index.log main.html;
root /home/wwwroot/pubilc/;
以上是正确的网站目录
index index.html index.htm index.php default.html default.htm default.php index.log main.html;
root /home/wwwroot/public/blog.itsse.cn;
修改配置到备份文件夹,修改后重启 nginx 即可;
动静态切换
/home/cpuStatus.sh
该脚本用于检查每分钟的CPU负载情况,达到阈值(比如CPU使用率达到80%)则记录至/home/100cpu.log;
#!/bin/bash
##CPU判定
function GetSysCPU
{
CpuIdle=`vmstat 1 5 |sed -n '3,$p' | awk '{x = x + $15} END {print x/5}' | awk -F. '{print $1}'`
CpuNum=`echo "100-$CpuIdle" | bc`
echo $CpuNum
}
usage=`GetSysCPU`
max=80 #CPU阈值,超过则记录至100cpu.log
if [ ${usage} -ge $max ];
then
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
echo "$date,CPU负载为$usage..." >> /home/100cpu.log
else
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
##echo "$date,CPU负载为$usage%..." >> /home/100cpu.log
echo "${date}" "CPU负载正常..."
fi
/home/CPUcheck.sh
该脚本用于统计 /home/100cpu.log 的记录值,统计一定时间范围(本示例是3分钟)内CPU负载超标次数,本示例中超标次数超过2次则切换使用静态镜像
#!/bin/bash
##判定层
ps -fe|grep "wget" |grep -v grep
if [ $? -ne 0 ]
#判定层
then
##执行层
> /home/100cpu.statistics.log; ##清空记录
wc -l /home/100cpu.log >> /home/100cpu.statistics.log #记录
results=$(awk '{print $1}' /home/100cpu.statistics.log) #记录
> /home/100cpu.log; #清空记录
max=2 #触发阈值为2次
if [ $results -ge $max ];
then
/home/switch2static.sh; #非备份情况下超过阈值则触发静态
else
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
/home/sec.ddoscheck.normal.sh; #切换至正常状态
echo "${date}" "已切换至正常模式..." >> /home/nglog.log; #记录操作日志
fi
##执行层
else
#Wget正在备份
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
echo "${date}" "CPU高,主要是因为在备份..." >> /home/nglog.log; #记录操作日志
fi
/home/switch2static.sh
该脚本用于切换 nginx 配置文件,并加载配置使之生效;
#!/bin/bash
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
echo "${date}" "已进入静态防御模式..." >> /home/nglog.log; #记录操作日志
cp /usr/local/nginx/conf/vhost/blog.itsse.cn.conf.ddos /usr/local/nginx/conf/vhost/blog.itsse.cn.conf; #博客切至静态配置
nginx -s reload #reload 配置使生效
/home/sec.ddoscheck.normal.sh
该脚本用于切换 nginx 配置文件 至正常状态;
/bin/cp /usr/local/nginx/conf/vhost/blog.itsse.cn.conf.bak /usr/local/nginx/conf/vhost/blog.itsse.cn.conf #.bak为正常nginx配置备份
nginx -s reload;
使用crontab自动执行脚本
最后一步,使CPUcheck.sh/cpuStatus..sh脚本的执行自动
root@localhost:/home# crontab -e
*/3 * * * * /home/CPUcheck.sh #每3分钟检测是否超过阈值
*/1 * * * * /home/cpuStatus.sh #每分钟记录一次CPU值