用 Fabric 來 Deploy

用 fabric 來 deploy - Oceanic / 人生海海

 


用 Fabric 來 Deploy

 

Oct 2nd, 2009

 

 

以前在寫 php 的時候是用 ruby 的 capistrano 來 deploy 程式, 雖然後來 php 好像有 phing, 雖然沒去深入研究, 可是光看文件就覺得沒有 capistrano 方便。 現在跑到 python, 當然就用 fabric 來 deploy, 雖然不像 capistrano 有 transaction, 不過也很夠用了。 ( 以下用的是 fabric 1.0.0a 的版本, 目前透過 easy_install 的版本好像還滿舊的 )

基本上 fabric 跟 capistrano 差不多 ( 應該就是學 capistrano 的 XD ), 寫個 fabfile.py 如下:

from __future__ import with_statement
from fabric.api import run, sudo
from fabric.context_managers import cd

PROJECT_PATH = '/var/www/myproject'

def dev():
    env.hosts = ['tzangms@localhost']

def prod():
    env.hosts = ['tzangms@tzangms.com', 'tzangms@tzangms2.com']

def deploy():
    with cd(PROJECT_PATH):
        run('hg revert . --no-backup; hg pull -u ')
        run("sed -i -e 's/DEBUG = .*/DEBUG = False/' settings.py")
        run('python manage.py migrate')
        sudo('service apache2 reload')

fabfile.py 大概像上面這樣, 接著就可以用下面指令來 deploy 到 dev 的環境:

fab dev deploy

或者 deploy 到 production:

fab prod deploy

真是超方便的 :p 不過當然這個 fabfile 簡化了許多實際上在 deploy 的手續, 不過應該可以描劃出基本 deploy 的方式, 以往用 capistrano 可以搭配 transaction 寫 rollback, 還有加上 deploy 版本的處理, 可以直接 rollback 版本, 不過後來超懶, 直接用 mercurial revert, 然後 pull -u, anyway, 有興趣的人在玩看看吧 :p

posted on 2012-03-18 02:19  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/03/18/2404270.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值