小沨的天空

  • 首页
  • Code
  • Dns
  • 图床
  • 店铺
私人小天地
谈天说地,学习笔记
  1. 首页
  2. VPS服务器
  3. 正文

用 VPS 给博客做镜像

2010年06月16日 1148点热度 0人点赞 0条评论

对于一个每日 PV 不超过1万的小博客来说,性能不是问题,一般的 VPS 都可以搞定,稳定性远比性能要重要。服务器 down 掉,会导致博客不能访问,不能更新,长时间 down 的话会失去读者,影响自己的写作计划/情绪,影响pagerank等等。前段时间 Hyperv 报漏洞,导致 FsckVPS 的很多客户丢失重要数据,长时间都不能恢复。小博客/网站的性能不是那么重要,每天没有那么多的访问压力。

为了给博客增加可靠性,给博客做个简单镜像是必要的,幸运的是我们的要求不高,不需要那些什么实时热备份,均衡负载,透明切换等高科技,只需要每隔一段时间同步一下博客以及数据库就可以了,很少有人能坚持每天写一篇博客,能每天写两篇就算牛博了,所以每天同步一次就够了。这里将讨论如何用 rsyn,ssh 和 mysqldump 来同步博客和数据库。

约定

为了更好的描述细节,这里作以下约定:

主服务器:blog.vpsee.com
备份服务器:mirror.vpsee.com
博客文件都存放在:/var/www/
数据库:MySQL

在 mirror.vpsee.com 进行同步操作,每隔一段时间同步 blog.vpsee.com 上的博客数据和数据库。

2台服务器互相访问

要想同步操作自动化,首先得让 mirror 服务器能直接从 blog 服务器上拷贝,不需要输入密码等信息,不需要人工干预,这个可以通过 ssh keys 来解决。用 root 安全登录 VPS 的方法一文提到了如何不输入密码进行远程访问的方法。这里再提一下:

1、在 mirror.vpsee.com 上创建一对 ssh keys:

ssh-keygen -t dsa

按回车接受默认文件名,得到 2 个文件:id_dsa 和 id_dsa.pub,前一个是 private key,后一个是 public key。注意:创建 key 的时候会提示输入 passphrase,直接回车不要输入任何 passphrase,这点很重要,将保证今后同步时不需要人工输入 passphrase。

2、保护好生成的 private key,不要让外界访问到。

3、在 blog.vpsee.com 上创建一个 /root/.ssh/authorized_keys 文件,把 mirror.vpsee.com 上生成的publice key(id_dsa.pub)的内容 copy+paste 到 blog.vpsee.com 的 authorized_keys 里,完整 copy,不能有空格/空行。

4、在 blog.vpsee.com上 禁止 root 直接 ssh 登录,修改 /etc/ssh/sshd_config,加上/修改这一行:

# vi /etc/ssh/sshd_config
PermitRootLogin without-password

5、重启 sshd

/etc/init.d/sshd restart

在FreeBSD上:

/etc/rc.d/sshd restart

6、安装 rsync
检查一下系统有没有安装 rsync,没有的话就安装:

# whereis rsync
# yum install rsync

7、上述操作是在 mirror.vpsee.com 上执行的,现在反过来需要在 blog.vpsee.com 上重复步骤1—6,把mirror 和 blog反过来在 blog 上生成 ssh keys 就可以了。因为下面的同步脚本会在 blog.vpsee.com 上运行命令拷贝文件到mirror.vpsee.com。

同步博客

登录 mirror.vpsee.com 进行同步操作,用 rsync 同步博客文件夹。–delete 选项是指在 blog.vpsee.com 上删除文件也同时在 mirror.vpsee.com 上删除。–exclude 选项是指把选定的文件/文件夹排除在外不参加同步。最后注意把 /var/www/ 及其子目录所有文件的所有者改成 web 服务器用户。

# rsync -avz --delete -e "ssh" root@blog.vpsee.com:/var/www/ /var/www/
receiving file list ... done
access_blog1.log
access_blog2.log
sent 27784 bytes  received 54809 bytes  23598.00 bytes/sec
total size is 51414782  speedup is 622.51
chown -R nginx:nginx /var/www/

同步数据库

登录 mirror.vpsee.com 后在 mirror 上操作,远程执行 mysqldump 命令把 blog 的数据库备份出来,打包压缩,然后拷贝到 mirror.vpsee.com 上。

# ssh root@blog.vpsee.com "mysqldump -u root -p'blog数据库密码'
--all-databases | gzip > /tmp/db.gz
# scp /tmp/db.gz root@mirror.vpsee.com:/tmp/"

在mirror.vpsee.com 上解开数据文件,并且导入 mirror 的数据库。

# gunzip -c /tmp/db.gz | mysql -u root -p'mirror数据库密码'"

自动化

为了让以上操作自动执行,先做个同步的脚本:

# vi /root/sync.sh
#!/bin/bash
main="blog.vpsee.com"
mirror="mirror.vpsee.com"
rsync -avz --delete -e "ssh" root@blog.vpsee.com:/var/www/ /var/www/;
ssh root@blog.vpsee.com "mysqldump -u root -p'blog数据库密码'
--all-databases | gzip > /tmp/db.gz;
scp /tmp/db.gz root@mirror.vpsee.com:/tmp/";
gunzip -c /tmp/db.gz | mysql -u root -p'mirror数据库密码';

别忘了把 sync.sh 改成可执行文件:

# chmod 755 /root/sync.sh

在 mirror.vpsee.com上 创建一个 cron job 每天凌晨2点执行同步:

# crontab -e
* /2 * * * root /root/sync.sh

如果使用的是 Linux 的话,可以直接拷贝 sync.sh 到 /etc/cron.daily/:

# cp /root/sync.sh /etc/cron.daily/

大功告成,以后只要更改了主服务器(blog.vpsee.com),备份服务器(mirror.vpsee.com)每天会自动去主服务器那里同步复制。

修改 DNS

现在有了一个博客的完全镜像,如果发现主服务器不能用了,及时把 DNS 指向备用服务器就可以了。这种方法要需要人工修改 DNS 记录,不高明,不过对于小博客来说总比 down 几天要好多了,算上主服务器 down 的几率,这个方案还凑合。

更自动的方法是做 DNS round robin,一个域名指向多个 IP(主服务器和备份服务器),一个 IP 不能访问了,就访问另外一个。

更更好的方法是做个小 cluster,load balance + redundancy,不过这 mysql 的 redundancy 功能只能在一个网段做,这意味着2台服务器的小 cluster 必须在一个网段里,如果用 VPS 的话,这就只能用一家 VPS 公司的产品(保证2个 VPS 在同一网段内),如果依赖单一公司,那么公司倒闭或者服务器报漏洞,数据丢失,VPS 不能用怎么办?VPSee.com 还是建议小博客或者小网站使用不同 VPS 服务商提供的产品,不要绑在单一公司上,尤其在 web hosting 这个行业,变化太快,服务器 down 掉,服务商跑路/倒闭太正常了。

原文地址:http://www.vpsee.com/2009/07/make-mirror-for-your-blog/

标签: 暂无
最后更新:2010年06月16日

小沨

一个网络白痴,爱好网络生活和技术。 梦想成为一个网络糕手.喜欢简单的一个80后男人! Life is better when shared !

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

小沨

一个网络白痴,爱好网络生活和技术。 梦想成为一个网络糕手.喜欢简单的一个80后男人! Life is better when shared !

小程序
广告
最新 热点 随机
最新 热点 随机
Server酱和Qmsg酱两个好用的推送服务 linux的ssh服务升级后无法启动修复 linux服务器的硬盘使用时间查询 启用chrome浏览器内置的二维码生成插件 宝塔面板或者LNMP下安装php的mongodb扩展 ShareX 对接tu.my图床实现截图和图片自动上传 帝国CMS的sitemap.xml设置和生成 hetzner服务器购买和安装debian系统 使用nginx的stream模块实现端口转发和TCP流量 服务器装Proxmox VE/多IP设置和单IP设置Nat转发
linux的ssh服务升级后无法启动修复Server酱和Qmsg酱两个好用的推送服务
黄钻用户免费获得财付通10元现金券(普通用户也有) VPS快速备份到GODADDY免费空间图文教程(转便宜吧) 利用VPS配置搭建frp/frps内网穿透/转寥寥 为GAE的应用绑定裸域名 Linux VPS上配置Nginx反向代理 通过Teredo快速设置Windows ipv6,连接只有ipv6 ip的VPS 使用代码平台cloud9云IDE平台搭建某些服务 Linux系统使用virt-what检测VPS虚拟化架构 directadmin面板PHP模式CLI转换为CGI win7 宽带连接和VPN连接651错误和619错误的解决方法.
标签聚合
DirectAdmin php centos vps 升级 服务器 linux 系统 网盘 ubuntu 免费 wordpress
开源相关
  • do mirrors
  • owncloud
  • Packages Search
  • centos vault
  • RepoForge
  • linode mirrors
  • Debian Mirror
  • 阿里开源镜像站
  • elrepo.org
  • Ubuntu Mirrors
  • fedoraproject
  • CentOS mirrors
友情链接
  • 豆博
  • 夜狐
  • semnew
  • 怪鸟博客
  • 死老鬼
  • 我喔喔喔
  • 轨迹博客
  • QQPCC
  • 午夜客
  • 天下无鱼
  • 朱志瑞
  • 撸羊毛
  • LiCEO
  • 爱购啦
  • 李子博客
  • 我的图库
  • 陈否否
  • 娃娃博客
  • 2.int.ru
  • 回到未来博客
  • vzone
  • 寥寥后花园
  • 麦麦同学
  • 傻子-跸西的blog

COPYRIGHT © 2020 小沨的天空. ALL RIGHTS RESERVED. @ 网站运行: @ 服务器运行状态

THEME KRATOS MADE BY VTROIS