什么是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
部署过程回顾
- ssh登录到远程服务器
- 切换到工程根目录,
git pull
拉取最新的代码 - 根据拉取的代码中的
requirement.txt
,安装依赖。 - 要执行
python manage.py collectstatic
收集静态文件。 - 执行
python manage.py migrate
迁移数据库。 - 重启
Nginx
和Gunicorn
使改动生效。
我们可以让Fabric执行这些步骤,实现部署的自动化
编写 Fabric 脚本
一般Fabric脚本放在本地电脑的项目根目录下。
from fabric.api import env, run
from fabric.operations import sudo
GIT_REPO = "git@github.com: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 root@65.49.224.37 -p 26421
root@65.49.224.37'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
网友评论