Fabric 是一個 command line 的 工具
一個remote ssh 的工具
之前我已經介紹過我在南華早報時deploy 的 scripts
使用的是 rsync + mysqldump + ssh tunneling
沒有辦法記住全部命令的情況下使用copy & paste commands
也使用得很好
只是 fabric 的好處是你可以將這些 command 簡單的包裝起來
你便可以fab deploy
來完成
先定義 user, host:
env.user = 'joe'
env.host = 'example.com'
def deploy():
domain = 'example.com'
with cd('/srv/www/' + domain + '/public_html'):
run('git pull')
run('git checkout master')
以上的代碼便會在指定的資料夾內執行 git pull
使用 git 代替 rsync 將代碼上傳到伺服器
又或者
def restart():
run('sudo service apache2 restart')
重新啟動伺服器
然後可以直接串起: fab deploy restart
你也可以定義環境變數:
def staging():
env.host = 'dev.example.com'
def live():
env.host = 'example.com'
然後fab staging deploy restart
deploy 到 stagingfab live deploy restart
deploy 到 live
Fabric 還有很多方便的進階功能可以使用
但以上的簡單代碼已經可以帶來使用的快感,令你喜歡它
其他的階用法還是以後再談
(文為16日後補)