python编程(fabric部署)

综合编程 2018-01-31 阅读原文

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

代码写好了,怎么部署到服务器上面一直是一个问题。过去,我们常常自己用pexpect或者paramiko通过ssh直接拷贝的方法来完成这一工作,这种方法非常暴力而且容易出错。后来有一次机会用了fabric,发现确实不错。通过它,上传、下载、执行服务器程序都能轻松搞定。

1、下载fabric

sudo apt-get install fabric

2、编写fabfile.py

def hello():
    print("Hello world!")

3、执行fab文件

fab hello

默认情况下,系统会默认查找fabfile.py这个文件。当然大家也可以用自己喜欢的文件名,比如test.py,这个时候就要这么执行了,

fab -f test hello

4、带参数的task

def hello(name="world"):
    print("Hello %s!" % name)

这个时候只需要给出自己的参数就可以了,

fab hello:name=Jeff

5、执行本地命令

from fabric.api import local

def prepare():
    local("ls -l")

6、执行多个命令

from fabric.api import local

def test():
    local("ls -l")

def commit():
    local("ls -l")

def push():
    local("ls -l")

def prepare():
    test()
    commit()
    push()

7、出错处理

fab程序在执行脚本出错的时候会自动终止,不再继续往下执行。

8、远端执行

from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm

env.hosts = ['user@ip']

def test():
    run('ls -l')

9、上传文件

from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm

env.hosts = ['user@ip']

def test():
    l = './*.pdf'
    r = '~'
    put(l, r)

9、下载文件

from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm

env.hosts = ['user@ip']

def test():
    r = '~/*.pdf'
    l = './'
    get(r, l)

10、远端起服务器程序

对于这种情况,建议先用创建run.sh,将要执行的命令用nohup运行的方式保存在run.sh中。接着,按照如下方式编写脚本运行就可以了,

def deploy():
    run('./run.sh', pty=False)

11、其他资料

关于fabric的其他资料,建议直接看 官网
,上面的介绍也详细、直观得多。

平凡的程序员

责编内容by:平凡的程序员阅读原文】。感谢您的支持!

您可能感兴趣的

BaDaS Arsenel : from grep to graph in under 5 minu... BaDaS = Big and Data and Science These days, BaDaS is all the rage. And to be successful at it, you need an arsenal o...
如何用 Python 写一个 Discord 机器人 在本教程中,您将学习如何使用 Python 创建一个简单的Discord 机器人。 也许您还不知道什么是 Discord,本质上它是一项针对游戏玩家的一种类 Slack(一个云协作团队工具和服务)的服务。 在 Discord 上,您...
微信跳一跳的python外挂仅仅是个外挂吗?... 微信跳一跳小游戏 2017年12月8号,微信的跳一跳小游戏上线,并直接推送到用户首页。由于画面精致,操作简便,跳一跳迅速 成为了全民游戏,许多好友开启了刷分模式。最高分通常都在400分左右。 神奇的战士-王松同...
Constantinople: Blockhash Refactoring Constantinople features pt 1 This series will dive into the features planned (or, at least currently being considered)...
python3 第十四章 – 数据类型之Dictionary(字典)... 在python中字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号( : )分割,每个对之间用逗号( , )分割,整个字典...