使用Fabric进行部署

Fabric是一个可以在远程机器上运行命令的库

Fabric官方目前只支持Python2版本,但是有勤劳的人开发出了适配Python3的版本。具体可以查看这个fork

Fabric的使用

我在使用Fabric的时候主要是用于部署我的网站。使用时候,首先需要引入所有的API:

# 导入Fabric API:
from fabric.api import *

这样就可以导入Fabric的API进行远程控制啦。

具体问题

  • git需要输入密码
env.forward_agent = True
  • ssh通过秘钥链接
# 使用秘钥
env.key_filename = ['/Users/xiuhao/.ssh/key']
  • 使用root
# 服务器登录用户名:
env.user = 'ubuntu'
# sudo用户为root:
env.sudo_user = 'root'

一个简单的部署例子

这个部署例子结合了更新代码,进入指定目录,运行命令等。

BASE_DIR = '/home/ubuntu/django_blog'
def deploy():
    """
    deploy new changes
    """
    with cd(BASE_DIR):
        run('git pull')
        run('make down')
        run('make up')

写好文件以后,保存为fabfile.py,运行fab deploy即可部署。deploy对应着deploy()函数。

NOTE:不在远程服务器上使用ssh的git仓库,是因为担心服务器被hack连累我的git repo

参考资料