博客维护脚本

10 篇文章 0 订阅

 

文章首先发表在 码蜂笔记 http://coderbee.net/index.php/notes/20130803/372

 

 

我博客维护脚本的功能主要:启动、停止博客(MySQL、PHP-FPM、Nginx),数据库数据和访问日志打包备份、Wordpress的文件打包备份、把恶意扫描的IP加入防火墙黑名单、过滤出人类访问的记录。

我的VPS的系统是Ubuntu 12.04。

 

启动、停止博客脚本

startBlog.sh,这个脚本还加到开机启动脚本里,万一VPS重启了也会自动启动博客。

log=/home/coderbee/blog/startBlogLog.log
date >> $log
/usr/share/mysql/bin/mysql.server start && {
        /usr/share/php5/sbin/php-fpm && {
                /usr/share/nginx/sbin/nginx && echo "start blog ok" >> $log ||
                echo "start nginx failed " >> $log ;
        };
} || { echo "start mysql failed ."  >> $log ; }

shutDownBlog.sh,这个脚本主要是在刚开始搭建博客时用,现在基本不用。

/usr/share/mysql/bin/mysql.server stop 2>&1 >/dev/null
kill -quit `cat /usr/share/php5/var/run/php-fpm.pid` 2>&1 >/dev/null
/usr/share/nginx/sbin/nginx -s stop 2>&1 >/dev/null

 

数据库数据和访问日志打包备份

cronday.sh,这个脚本每天凌晨调度执行。

export JAVA_HOME='/usr/share/jdk1.7.0_21'
export PATH=$PATH:$JAVA_HOME/bin

blog=/home/coderbee/blog/
bakDir=${blog}dataBak
#  用mysqldump命令把博客的数据库导出来,然后用vpsBack.jar上传的Dropbox,vpsBack.jar是用Dropbox的API写的一个小工具,只有简单的上传功能。
/usr/share/mysql/bin/mysqldump -u wpblog -p'password' blog > ${bakDir}/blog-bak.sql.tmp 2>/dev/null &&
 mv ${bakDir}/blog-bak.sql.tmp ${bakDir}/blog-bak.sql  &&
 java -jar ${blog}vpsBack.jar upload vpsBak4coderbee/db/`date -d"yesterday" +"%Y%m%d"`/ ${bakDir}/blog-bak.sql &&
 echo "backup sql to dropbox ok ."


#  一个月的访问日志放在以月份命名的文件夹下,同一年的月份的文件夹放在以年命名的文件夹下。
monDir=${bakDir}/weblog/$(date -d"yesterday" +"%Y")/$(date -d"yesterday" +"%m")
dayPath=$(date -d"yesterday" +"%d").log
[ -d "${monDir}" ] || mkdir -p ${monDir}


logDir=/usr/share/nginx/logs

#  nginx日志拷贝、清理、切换
cd $logDir && cp access.log ${dayPath} && :> access.log &&
#  通知nginx重新打开日志文件
kill -USR1  `cat /usr/share/nginx/logs/nginx.pid` &&


#  打包访问日志
tar -czf "${dayPath}.tar.gz" "${dayPath}" &&

#  备份访问日志
rm -f ${dayPath} && mv -f "${dayPath}.tar.gz" ${monDir} &&
chown -R coderbee:appgroup ${bakDir} && echo "backup web log down"

 

WordPress的文件打包备份

cronweek.sh,这个脚本会打包Wordpress的文件,并上传到Dropbox。因为写博客上传的多媒体和Wordpress插件一般会放在这个目录下,所以每周备份一次。

cd /var/www/

export JAVA_HOME="/usr/share/jdk1.7.0_21"
export PATH=$PATH:$JAVA_HOME/bin

fname="web-`date +"%Y%m%d" -d"yesterday"`.gz"
tar czf $fname wordpress/ && 
 java -jar /home/coderbee/blog/vpsBack.jar upload vpsBak4coderbee/web/ $fname &&
 rm $fname && echo "backup web done ."

 

过滤出人类访问的记录

先说下我的nginx的日志记录格式: '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

 

比如这是一条: 122.194.20.145 - - [03/Aug/2013:18:13:49 +0800] "GET /index.php/algorithm/20130801/343 HTTP/1.1" 200 10575 "http://news.dbanotes.net/newest" "Mozilla/5.0 (iPad; CPU OS 6_0_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A550 Safari/8536.25" "-"

 

这个只是很简单的日志处理脚本,只处理今天的博客文章和首页的访问日志,根据User-Agent过滤。

log="/usr/share/nginx/logs/access.log"

awk -F"\"" '$2 ~ /(GET \/ HTTP.*)|(\/index.php\/[a-zA-Z]*\/[0-9]+\/[0-9]+ .*)|(\/html5\/[a-zA-Z0-9]+.html .*)/ && $6 !~/(http:\/\/|Java|robot|.com|Wget|PHP|Reeder|Spider|(^-$)|ips-agent|@)/ {print $0}' $log

 

还有按refer统计:
. humanVisit.sh | awk -F"\"" '{print $2, $4}' | cut -d" " -f2,4 | sort -k 1 | uniq -c

 

访问最多的url:
. humanVisit.sh | awk -F"\"" '{print $2}' | cut -d" " -f2 | sort | uniq -c

 

把恶意扫描的IP加入防火墙黑名单

这个脚本是最近添加的,主要是把那些访问日志里4xx状态、访问的URL看起来是恶意的IP加入防火墙过滤掉。由cron没小时调度执行一次。

ipfilter.sh

cd /home/coderbee/blog/
sortIps=sortIpx

#  过滤出访问日志里4xx状态、访问的URL里包含 admin|Admin|scripts且以php后缀结尾的IP
awk -F'"' '$3~/4.. [0-9]+/ && $2 ~ /GET \/.*(admin|Admin|scripts).+(index|setup)\.php/ {print $0}' /usr/share/nginx/logs/access.log | awk '{print $1}' >> evilIP

sort evilIP | uniq > evilIP.tmp && mv evilIP{.tmp,}

iptables -F INPUT

#  把整个IP/24段加入黑名单
cut -d. -f1-3 ips evilIP | sort | uniq > $sortIps
for i in $sortIps
do
    while read line
    do
        if [[ ! -z $line ]]; then
           ip=$line/24
           iptables -t filter -I INPUT -s $ip -j DROP
        fi
    done < $i
done

rm $sortIps

cron调度

1  0  *   *  * /home/coderbee/blog/cronday.sh 2>&1 >> /home/coderbee/blog/cronlog
1  4  *   *  1 /home/coderbee/blog/cronweek.sh 2>&1 >> /home/coderbee/blog/cronlog
1  *  *   *  * /home/coderbee/blog/ipfilter.sh 2>&1 >> /home/coderbee/blog/ipfilterlog

小结

这里并没有复杂高深的东西,基本都是 AWK处理文本、sort排序、uniq去重、cut筛选字段、tar进行打包压缩、用cron定时调度,还用了shell的命令条件执行、命令组合、重定向等。

 

这也体现这Linux系统强大之一:提供大量简单的基本命令,用shell把这些命令粘合起来就可以实现更复杂、强大的功能。

 

我也会继续探索Linux shell的更多玩法,尽可能让手工操作转为自动化的。

 

要Linux下编辑shell,首先要掌握一个命令行下的文本编辑器,一般就是Vi了,我之前是按照 酷壳的这篇文章 《简明 Vim 练级攻略》 http://coolshell.cn/articles/5426.html,练了两个星期才基本上上手。

 

关于博客搭建过程可见: http://coderbee.net/index.php/notes/20130620/254

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WordPress是一个开源的内容管理系统(CMS),它可以用来搭建个人博客或者其他类型的网站。以下是搭建WordPress个人博客的步骤: 1. 选择合适的主机和域名:首先,你需要选择一个可靠的主机提供商,并注册一个域名。主机提供商会提供服务器空间来存储你的网站文件,而域名则是你网站的地址。 2. 安装WordPress:大多数主机提供商都支持一键安装WordPress,你可以通过他们的控制面板或者自动安装脚本来完成安装过程。如果你的主机不支持一键安装,你也可以手动下载WordPress并将其上传到服务器。 3. 配置WordPress:安装完成后,你可以通过访问你的域名来进入WordPress的后台管理界面。在这里,你可以设置网站的标题、描述、主题等信息,并创建管理员账号。 4. 选择合适的主题:WordPress有大量的免费和付费主题可供选择,你可以根据自己的需求和喜好选择一个合适的主题。主题决定了你网站的外观和布局。 5. 安装必要的插件:WordPress有丰富的插件库,你可以根据需要安装一些常用的插件来增强网站功能,比如SEO优化、社交分享、表单提交等。 6. 创建内容:现在你可以开始创建和发布你的博客文章了。WordPress提供了一个直观的编辑器,你可以轻松地添加文字、图片、视频等内容,并对文章进行格式化和排版。 7. 定期更新和维护:为了保持网站的安全性和稳定性,你需要定期更新WordPress核心、主题和插件,并备份网站数据。此外,你还可以优化网站的性能,提高访问速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值