使用fabric部署django应用


使用fabric部署django应用

本文是我的网站易读中文网自动化部署的脚本实现,以下代码在ubuntu和debian中测试通过

由于网站使用的是python技术,鉴于python的强大,在自自动部署上有fabric这个一个强大的工具,阅读本文除了略懂pythonfabric,还需要安装fabtools,安装这个是为了简化一些基本的操作(为不太懂linux的人找的借口而已),里面封装了非常多的命令。下面我一步一步的将我网站的自动部署过程写下来

  • 首先是fabric文件中基本的配置,拿到一个vps以后,会有一个默认的root账户,大家在部署网站的时候尽量不要使用root账户,不太安全,万一误删了文件怎么办!所以首先得创建一个用户,最好具有sudo权限

    from fabric.api import *
    from fabtools import require
    #创建用户的代码
    user = xxx
    password = xxx
    def add_user():
    require.users.user(user, password)
    require.users.sudoer(user)

    使用下面代码运行函数

    fab -H root@ip:host add_user

    这样就创建了一个具有sudo 权限的用户,创建完用户后,这个root账号和密码以后就不用使用了(除了你还想创建新的用户),直接使用创建好的这个user就可以了,然后在脚本里配置一个role,这样每次远程操作的时候不需要输入账号了密码了

    env.roledefs = {
    "user": "用户名@ip:port",
    }
    env.passwords = {
    "用户名@ip:port":"密码"
    }

    配置好后,下面会用到

  • 创建了用户后,安装需要的软件

    @task
    @roles("user")
    def install_deb():
    require.deb.packages([
    "python-dev",
    "python-lxml",
    "python-imaging",
    "git",
    "libffi-dev",
    "libxml2",
    "python-libxslt1",
    "python-libxml2",
    "libxslt1-dev",
    "libxml2-dev",
    "libmysqlclient-dev",
    "libjpeg-dev",
    "libfreetype6-dev"
    ])

    大家看到这个函数用了两个装饰器,一个是task,这个每个fab函数都需要,另一个是roles('user'),有了这个以后,安装软件的命令就变成了

    fab install_deb

    这样就不需要输入账号密码了,减少了操作键盘的时间,所以以后每个函数都会带上这两个装饰器

  • 配置mysql

    def create_mysql():
    require.mysql.server(password=mysql_root_pw)
    with settings(mysql_user=mysql_root, mysql_password=mysql_root_pw):
    require.mysql.user(mysql_user, mysql_pw)
    require.mysql.database(mysql_db, owner=mysql_user)

    里面的那些变量变一下就可以用

先写这么多吧!今天不想写了,后面还有一些就是创建python环境,git code,建立数据库,配置static file,配置gunicorn,supervisor,nginx
然后网站就开始运行了!
最后附上小站 易读中文网
大家要是觉得本文对你有一点点作用,转载的时候请保留小站的链接!谢谢了

fabric自动化部署django的更多相关文章

  1. 使用 Fabric 自动化部署 Django 项目

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在上一篇教程中,我们通过手工方式将代码部署到了服务器.整个过程涉及到十几条命令,输了 ...

  2. fabric 自动化部署

    fabric 项目发布和运维的工作相当机械,频率还蛮高,导致时间浪费在敲大量重复的命令上. 修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A ...

  3. Centos7.6上利用docker搭建Jenkins来自动化部署Django项目

    一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚. 整个过程相当复 ...

  4. 在阿里云Centos7.6上利用docker搭建Jenkins来自动化部署Django项目

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_84 一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更 ...

  5. Django 1.6 最佳实践: django项目的服务器自动化部署(转)

    原文:http://www.weiguda.com/blog/41/ 当我们设置服务器时, 不应该每次都使用ssh登录服务器, 再按照记忆一步一步的配置. 因为这样实在是太容易忘记某些步骤了. 服务器 ...

  6. 用 Fabric 实现自动化部署

    自动化部署代码 http://liyangliang.me/posts/2015/06/deploy-applications-using-fabric/ http://fabric-docs-cn. ...

  7. 使用 Docker 让部署 Django 项目更加轻松

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 之前一系列繁琐的部署步骤让我们感到痛苦.这些痛苦包括: 要去服务器上执行 n 条命令 ...

  8. 使用Fabric自动化你的任务

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

  9. Linux 自动化部署

    1.pexpect Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Py ...

随机推荐

  1. 玩转12款Linux开源机器人

    玩转12款Linux开源机器人 头条网2016-02-15 09:04 3DR Solo智能无人机发布于2015年中期.作为试图与大疆广受欢迎的Phantom系列无人机相抗衡的产品,它的双处理器运行L ...

  2. 【转】spin_lock & mutex_lock的区别? .

    原文网址:http://blog.csdn.net/wilsonboliu/article/details/19190861 本文由该问题引入到内核锁的讨论,归纳如下   为什么需要内核锁? 多核处理 ...

  3. 【6】JAVA---地址App小软件(QueryPanel.class)(表现层)

    查找模块: 年龄可进行段查找. 其他的都是模糊匹配. 空格为无用字符,会屏蔽的(除年龄). (如果在年龄中输入空格,会出现异常,当时没想到这点,要防护这点很容易的,但因为在这个小软件的编写过程,我主要 ...

  4. Android Studio 遇见的第一个Error

    最近在国内多次尝试在Eclipse下更新SDK无果后,最后终于通过FQ后结束了Google服务器无法访问的噩梦. 顺着墙外的梯子,一并下载Google的Android Studio尝鲜,安装成功后,就 ...

  5. QThread 与 QObject的关系

    Threads and QObjects QThread 继承 QObject..它可以发送started和finished信号,也提供了一些slot函数. QObject.可以用于多线程,可以发送信 ...

  6. iOS--导航栏样式

    push返回按钮样式: UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBar ...

  7. 解决Item控件抢占焦点

    http://www.imooc.com/learn/372 在抢占焦点的控件加上 方法一: android:focusable="false" 方法二: 在外界布局上 andro ...

  8. 混血儿爹妈要混的远,数据库与WEB分离,得混的近

    最近搞了个漫画网站,放在香港VPS,由于内存不够,把数据库移到了阿里云,混的远了点,没缓存的时候网站打开速度慢了1秒左右.笨狗漫画:http://www.bengou8.com 底部有sql时间cop ...

  9. AngularJS clone directive 指令复制

    需求背景:         directive模块化某表单信息,但表单信息可加入多条.此时就涉及到clone directive. 解决方式:         能够通过使用angularjs中$com ...

  10. VS2010 使用TeeChart画图控件 - 之二 - 绘制图形(折线图,柱状图)

    1.前期准备 详细可见VS2010 使用TeeChart画图控件 - 之中的一个 控件和类的导入 1. 1 加入TeeChart控件,给控件加入变量m_TeeChart 加入TeeChart控件,右击 ...