傳統(tǒng)發(fā)布現(xiàn)狀
傳統(tǒng)的服務(wù)器/客戶端版本發(fā)布流程都需要經(jīng)歷以下流程:
1. 獲取代碼
2. 編譯代碼
3. 將配置,二進(jìn)制文件, 資源打包
4. 掛接遠(yuǎn)程服務(wù)器磁盤拷貝打包文件
5. 遠(yuǎn)程操作解壓打包文件
6. 修改設(shè)置,指向最新版本
7. 重啟服務(wù)器
此流程繁瑣,重復(fù)且無聊, 同時, 由于網(wǎng)絡(luò)帶寬,網(wǎng)速等約束, 每次若使用完整包發(fā)布,傳輸起來非常吃力
本文討論的外網(wǎng)服務(wù)器由于安全性要求,禁止root登錄,只能用普通帳號登錄或傳輸后, 提權(quán)為root繼續(xù)進(jìn)行以上操作, 因此rsync的使用受到嚴(yán)重限制
即便使用Windows下的同步軟件, 也幾乎不可能.
HG特性及優(yōu)勢
HG作為一個優(yōu)秀,小巧的跨平臺代碼管理軟件的特性,正好能解決以上問題, 主要特性:
1. 安裝簡便, 可以使用代碼直接安裝
2. 利用本地映射版本可以對新版本做差異比較
3. 增量包傳輸, 100%同步, 本地文件刪除后, 遠(yuǎn)程文件也會同步刪除
4. 傳輸壓縮
5. 增量包可以打包為patch進(jìn)行離線更新
6. 可以恢復(fù)到任意版本, 提交版本有據(jù)可查
以下部署系統(tǒng)以CentOS為基礎(chǔ), 其他系統(tǒng)類似
本文來自戰(zhàn)魂小筑的博客http://www.shnenglu.com/sunicdavy 轉(zhuǎn)載請注明來源
為遠(yuǎn)程服務(wù)器安裝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同步數(shù)據(jù)
創(chuàng)建倉庫
找到你需要同步的目錄,進(jìn)入目錄
執(zhí)行
hg init
vi .hg/hgrc
添加以下內(nèi)容,讓這個倉庫支持外部push
[ui]
username=服務(wù)器提交后看到的用戶名
[web]
push_ssl = false
allow_push=*
同步
vi /etc/sysconfig/iptables
添加HG服務(wù)的8000端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
開啟倉庫同步服務(wù)
hg serve
本地機器同樣找到文件夾,創(chuàng)建倉庫
hg init
以后每次需要同步時,使用命令,或者烏龜HG的界面工具拉取服務(wù)器數(shù)據(jù)即可
hg pull http://服務(wù)器地址:8000
版本提交方法與HG日常使用類似, 這里不再闡述
離線更新
對于某些服務(wù)器深處防火墻或者安全登錄后方,不能直接開啟8000端口的情況
可以使用hg導(dǎo)出一個patch, 傳輸?shù)竭h(yuǎn)程服務(wù)器, 使用hg import PATCH 即可