战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  257 随笔 :: 0 文章 :: 506 评论 :: 0 Trackbacks

传统发布现状

传统的服务器/客户端版本发布流程都需要经历以下流程:

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 即可

posted on 2012-04-26 11:11 战魂小筑 阅读(3034) 评论(0)  编辑 收藏 引用 所属分类: 网络 服务器技术工具使用及设计

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理