molezz BAR

生命科学和计算机技术 开始使用

定时备份与 nginx 反向代理 vps 应用 (一)


最近原先的虚拟主机出现问题, 于是索性完全转到 vps 空间. wordpress 和 dokuwiki 的搬家基本很顺利, 主要平时注意了备份问题, 不过还是少了一篇日志和 2 个评论, 等到恢复再补上. 由于图片都是外链, 所以搬家很方便, sql 数据很小, 主要的问题是原先设的一些应用没有备份, 比如 twitter api 和 dabr 之类的应急应用.

设置好了域名绑定后, 主要就是设置备份, 现在 molezz.net 主要的就是一个 wordpress blog 和 dokuwiki 知识整理. 前者的备份用了WordPress Database Backup进行每周备份, 而 dokuwiki 没有这样的定期插件, 而且不是基于 mysql 的, 是使用 txt 进行记录, 不能用上面那个插件备份, 于是想到了 linux 下的脚本和 crond 进行备份. 另外由于用了 nginx 而不是 apache, 可以直接利用 nginx 的 reverse proxy 设置 twitter 的 api, 而不用twip之类的第三方~

(I) 定期自动备份文件夹

由于 dokuwiki 的记录都是保存于 data/pages 目录下, 所以我只要备份这个里面的数据即可, 首先是压缩这个文件夹为单个文件, 然后将其 email 到我的 gmail 邮箱备份即可. 以当日日期为文件名压缩得到 tar.gz 文件, 利用 uuencode 编成附件, 然后利用 mail 程序发送到邮箱. 最后删除 vps 上生成的临时 tar.gz 文件. 脚本文件如下:

#!/bin/bash
# backup dokuwiki pages program

tar czfP `date +"%Y%m%d"`_wikipages.tar.gz wiki/data/pages/
uuencode `date +"%Y%m%d"`_wikipages.tar.gz `date +"%Y%m%d"`_wikipages.tar.gz | mail -s "molezz wiki backup" molezz+backup@gmail.com
rm *wikipages.tar.gz

写好脚本后要进行每周的执行, 用命令 crontab -e 进行设置 (注意文件夹路径)

25 20 * * 3 /home/molezz/html/wikibackup.sh

表示每周三 20:25 进行备份, 如果要每月或每天的话也可以进行相应更改, 前 5 个位置分别为 <分, 时, 日, 月, 周>, 具体可以参考鸟哥的私房菜这章

(II) 利用 nginx 反向代理设置 api

解决了备份问题, 接下去就是我的 twitter api 问题, 原先使用的 twip 架设的 api 使我的手机 ubertwitter 能看推. 而用了 nginx 后发现 twip 工作不正常, 原来是 rewrite 的问题, 上google code一看 … 原来 nginx 可以设置 reverse proxy, 于是只要将我的一个域名设置反向代理到 api.twitter.com 即可

设置域名解析, 如 www.aaa.com(只是例子, 不存在), 打开 nginx.conf 文件, 添加

server {
        listen       80;
        server_name  www.aaa.com;

        location / {
            proxy_pass http://twitter.com/;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For
            $proxy_add_x_forwarded_for;
        }
    }

重启 nginx 服务后, 只要在 api 的地址填写 www.aaa.com 即可访问 twitter 的 api 了, 另外这个也可以用于其他代理, 而且还能隐藏真实的原网址.

vps 虽然贵, 但是物有所值, 很多自定义服务都能实现.

评论
留下你的脚步