为了确保网站的正常运行,增加了下面这些 linux 定时任务。包括更新证书,发布博文,备份网站等等

24 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
24 1 * * * sh /root/acme/update-key.sh
59 23 * * * /root/bak.sh >/dev/null 2>&1
*/1 * * * * cd /alidata/www/hugo/content && git clean -df && git reset --hard HEAD && git pull && /usr/bin/hugobuild
0 0 * * * rm -rf /alidata/www/hugo/public && /usr/bin/hugobuild
0 0 * * * echo > /var/spool/mail/root

这些任务都是干什么的呢?为啥必须这样呢?

更新 Https 证书

我用的是Let's Encrypt,泛域名证书,包括dudugou.cn *.dudugou.cn。官网推荐的是用 Certbot ,但是它需要 python 3,而我的服务器是 CentOS6,用不了它。

找了一圈,发现 acme.sh 就很好用,只要配置阿里云密钥就能自动配置域名做泛域名解析了。

它会自动判断证书是否需要续期,自动续期,非常省心,而且一键安装。

更新证书到 Nginx 配置目录

生成证书和更新证书到 Nginx 是两个分开的任务,为什么这样?官网说因为安全,我觉得这样逻辑更清晰 (•̀ᴗ•́)

[dudugou.cn]# cat /root/acme/update-key.sh
/root/.acme.sh/acme.sh --install-cert -d dudugou.cn \
--key-file       /alidata/server/nginx/conf/key.pem  \
--fullchain-file /alidata/server/nginx/conf/cert.pem \
--reloadcmd     "service nginx restart"

备份网站

备份!备份!备份!不备份等于裸奔。

[dudugou.cn]# cat  /root/bak.sh
#!/bin/bash
tar -czvf /bak/hugo$(date +"%F").tar.gz /alidata/www/hugo/ --exclude=/alidata/www/hugo/themes
tar -czvf /bak/nginx$(date +"%F").tar.gz /alidata/server/nginx/conf/
find /bak/ -type f -mtime +7 -exec rm -f {} \;

发布博文

每次手动执行 hugo 发布太麻烦,而且也不现实。比如我现在在火车上用手机打字,输命令还不得累死 |・ω・`)。

我的博客是部署在自己服务器的,不是 *pages ,不过 Markdown 原文是保存在 Github 的,所以我写了一个自动更新 markdown 文章到本地,并编译后部署的脚本。每分钟跑一次。 这样即使只有手机,我也能不停的写写写。写好之后只要点提交,等一分钟幻想一下未来的美好生活,再睁开眼,博文更新好啦!(*/∇\*)

保存在 GitHub 还有个好处,有些博文不想立即发布,可以签出新分支,修改满意后,合并,再次检查,提交,完美!

清理垃圾文章

为什么要清理呢,因为有些文章我会删了,可是发布的脚本只会新增不会删除,所以每到零时零刻,这个死神就会出来清理这个博客里的世界,然后再召唤创世神 Hugo 重新创造出生机盎然的博客,以上。

清理本地邮箱

┐(─__─)┌个人爱好