python django blog 2 : fabric 自动化部署

什么是Fabric

是一个Python库,可以通过SSH在多个host上批量执行任务。你可以编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量远程服务器上自动运行。这些功能非常适合应用的自动化部署,或者执行系统管理任务

安装Fabric

Fabric只支持python2,但是我们可以使用Fabric3。它是Fabric的python3版本。
激活虚拟环境后。使用pip命令即可了。

zhou:~ zhouming$ source ~/Documents/Envs/blogproject_env/bin/activate
(blogproject_env) zhou:~ zhouming$ pip3 install fabric3

部署过程回顾

  1. ssh登录到远程服务器
  2. 切换到工程根目录,git pull拉取最新的代码
  3. 根据拉取的代码中的requirement.txt,安装依赖。
  4. 要执行 python manage.py collectstatic 收集静态文件。
  5. 执行 python manage.py migrate 迁移数据库。
  6. 重启 NginxGunicorn使改动生效。
    我们可以让Fabric执行这些步骤,实现部署的自动化

编写 Fabric 脚本

一般Fabric脚本放在本地电脑的项目根目录下。

from fabric.api import env, run
from fabric.operations import sudo

GIT_REPO = "[email protected]:rookie250/detail.git"

env.user = 'root'       ### 
env.password = '....' ###  填上自己的root密码就可以了。

# 填写你自己的主机对应的域名
env.hosts = ['www.zhoublog.kim']

# 一般情况下为 22 端口,如果非 22 端口请查看你的主机服务提供商提供的信息
env.port = '26421'


def deploy():
    source_folder = '/home/zhou/sites/www.zhoublog.kim/detail'

    run('cd %s && git pull' % source_folder)
    run("""
        cd {} &&
        ../env/bin/pip install -r requirements.txt &&
        ../env/bin/python3 manage.py collectstatic --noinput &&
        ../env/bin/python3 manage.py migrate
        """.format(source_folder))
    sudo('restart gunicorn-www.zhoublog.kim')
    sudo('service nginx reload')

回顾一下自己ssh命令登录的过程

zhou:~ zhouming$ ssh [email protected] -p 26421
[email protected]'s password: 

实际上env.user就是登录名,env.password就是登录密码,env.hosts是登录的主机域名。env.port 是主机ssh服务的端口号,source_folder 是远程服务器工程的根目录。

踩的坑总结

发现使用root账号名无法登录到

回顾知识点 ssh 登录

ssh-keygen -t rsa

参考

ssh登录:http://blog.csdn.net/wh_19910525/article/details/7433164
数字签名: https://www.cnblogs.com/SirSmith/p/4985571.html

你可能感兴趣的:(python django blog 2 : fabric 自动化部署)