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

warning: 这篇文章距离上次修改已过187天,其中的内容可能已经有所变动。

最近原先的虚拟主机出现问题, 于是索性完全转到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" [email protected]
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虽然贵, 但是物有所值, 很多自定义服务都能实现.

已有 2 条评论

  1. @ppg 恩, 我在宿舍也弄了一个, 不过因为不一定24小时, 所以还是把主要数据定期email到gmail里备份

  2. ppg ppg

    在家搞了台服务器,还是不放心vps, 直接下载到自己家的电脑备份

添加新评论