传统发布现状
传统的服务器/客户端版本发布流程都需要经历以下流程:
1. 获取代码
2. 编译代码
3. 将配置,二进制文件, 资源打包
4. 挂接远程服务器磁盘拷贝打包文件
5. 远程操作解压打包文件
6. 修改设置,指向最新版本
7. 重启服务器
此流程繁琐,重复且无聊, 同时, 由于网络带宽,网速等约束, 每次若使用完整包发布,传输起来非常吃力
本文讨论的外网服务器由于安全性要求,禁止root登录,只能用普通帐号登录或传输后, 提权为root继续进行以上操作, 因此rsync的使用受到严重限制
即便使用Windows下的同步软件, 也几乎不可能.
HG特性及优势
HG作为一个优秀,小巧的跨平台代码管理软件的特性,正好能解决以上问题, 主要特性:
1. 安装简便, 可以使用代码直接安装
2. 利用本地映射版本可以对新版本做差异比较
3. 增量包传输, 100%同步, 本地文件删除后, 远程文件也会同步删除
4. 传输压缩
5. 增量包可以打包为patch进行离线更新
6. 可以恢复到任意版本, 提交版本有据可查
以下部署系统以CentOS为基础, 其他系统类似
本文来自战魂小筑的博客http://www.cppblog.com/sunicdavy 转载请注明来源
为远程服务器安装HG
安装依赖库
yum install python-devel
获取HG源码
wget http://mercurial.selenic.com/release/mercurial-2.1.tar.gz
tar zxvf ./mercurial-2.1.tar.gz
编译安装
make all
make install
hg debuginstall
使用HG同步数据
创建仓库
找到你需要同步的目录,进入目录
执行
hg init
vi .hg/hgrc
添加以下内容,让这个仓库支持外部push
[ui]
username=服务器提交后看到的用户名
[web]
push_ssl = false
allow_push=*
同步
vi /etc/sysconfig/iptables
添加HG服务的8000端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
开启仓库同步服务
hg serve
本地机器同样找到文件夹,创建仓库
hg init
以后每次需要同步时,使用命令,或者乌龟HG的界面工具拉取服务器数据即可
hg pull http://服务器地址:8000
版本提交方法与HG日常使用类似, 这里不再阐述
离线更新
对于某些服务器深处防火墙或者安全登录后方,不能直接开启8000端口的情况
可以使用hg导出一个patch, 传输到远程服务器, 使用hg import PATCH 即可