2016年1月

使用Backup进行站点数据备份

Backup是一个使用ruby编写的多功能备份工具,加上一个支持七牛的扩展backup2qiniu,我们就可以很方便地将站点数据备份到七牛上。

首先系统上需要安装ruby,ubuntu上可以

apt-get install ruby ruby-dev

在centos上则是:

yum install ruby ruby-devel

然后安装backup和其扩展backup2qiniu:

gem install backup
gem install backup2qiniu

安装完成后创建配置文件:

backup generate:config
backup generate:model --trigger=backup2qiniu

修改 ~/Backup/models/backup2qiniu.rb 内容如下,注意修改其中的配置项:

require 'rubygems'
gem 'backup2qiniu'
require 'backup2qiniu'

Backup::Model.new(:backup2qiniu, 'backup vps data to qiniu') do
  database MySQL do |db|
    db.name = 'xxx'
    db.username = 'root'
    db.password = 'xxx'
    db.host = 'localhost'
    db.port = 3306
    db.socket = '/tmp/mysql.sock'
  end

  archive :web do |archive|
    archive.use_sudo
    archive.root '/data'
    archive.add 'wwwroot/web'
    archive.exclude 'wwwroot/web/vendor'
  end

  compress_with Gzip

  store_with Qiniu do |q|
    q.keep = 7
    q.access_key = 'xxx'
    q.access_secret = 'xxx'
    q.bucket = 'xxx'
    q.path = 'xxx'
  end
end

使用如下命令即可触发备份

backup perform -t backup2qiniu

vim中^M的出现原因和解决办法

vim中会出现^M是因为,在Windows中文件的换行符是\r\n(CRLF,回车换行),而linux中是\n(LF,换行),所以Windows下编辑的文件到了linux中每行都会多出一个\r。

解决的方法也很简单,就是批量替换,:%s/\r//g

或者直接使用dos2unix工具,该工具在常见的linux发行版上都可以通过包管理工具安装。

FinalSpeed使用感受

在FinalSpeed出现之前,给服务器加速的方案常见的有锐速net-speeder等,但锐速对系统内核版本有要求,openvz的vps是用不了的,非openvz的也得是特定内核的少数linux发行版才可以支持。两者的优化效果我之前都有体验过,但都没有finalspeed这么惊艳。

一开始让我使用FinalSpeed我是拒绝的,因为finalspeed需要客户端支持。然而今天折腾了一下发现效果真的是杠杠的,美国的vps在shell里敲命令再也不卡了,就是偶尔连接会断掉,但不是什么大问题。而且finalspeed的客户端端口映射还带来一个隐藏的好处就是服务器ip变化时只需要改下finalspeed里的服务器ip就好了,再也不用一个一个地改本地的ss、navicat、xshell里的服务器地址了,简直棒呆。

免费SSL证书Let’s Encrypt安装使用记录

目前我包括博客在内的几个小站都在sae上,由于sae上的限制还是比较多的,所以有迁移到vps上的计划。

今天在vps上折腾了一下配置ssl证书,发现这方面很多前人已经提供了不少经验和工具,可以很方便地给自己的站点用上https。

首先申请Let’s Encrypt的证书我是用了https://www.v2ex.com/t/241819这个帖子里给出的一个shell脚本,全程只要修改下配置文件,就会全自动获取证书,也可以自动给证书续期,十分方便。

下载脚本:

wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
chmod +x letsencrypt.sh

修改配置文件:

ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="example.com.key"
DOMAIN_DIR="/var/www/example.com"
DOMAINS="DNS:example.com,DNS:whatever.example.com"

里面的key脚本都会自动帮我们生成,只要配置正确即可。

./letsencrypt.sh letsencrypt.conf

执行上述命令即可完成整个证书签发过程,需要注意的有:

  • 签发的域名必须已经解析,并且项目路径要填写对,在证书签发过程中,脚本会在项目根目录写一个文件,然后通过http方式来访问该文件,必须保证该文件能被正常下载才能通过验证。

  • 服务器python版本必须大于等于2.7,2.6及以下会出现各种问题,不确定3.x是否可以。

获得证书后,如果是使用nginx作为服务器的话,只要在配置文件里加上类似如下的配置:

server {
    listen 443;
    ssl on;
    ssl_certificate  /usr/local/nginx/conf/server.crt;
    ssl_certificate_key  /usr/local/nginx/conf/server_nopwd.key;
}

然后重启nginx服务即可。