zoukankan      html  css  js  c++  java
  • 用 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

  • 相关阅读:
    5.11号团队冲刺(十)
    5.10号团队冲刺(九)
    python day04
    python day03
    python day02
    python day01
    模板语法标签继承关系
    DNS解析详情
    和域名相关的知识
    Webpack 4.X webpack.config.js 文件配置(一)
  • 原文地址:https://www.cnblogs.com/lexus/p/2404270.html
Copyright © 2011-2022 走看看