fabric自动化部署django
使用fabric部署django应用
使用fabric部署django应用
本文是我的网站易读中文网自动化部署的脚本实现,以下代码在ubuntu和debian中测试通过
由于网站使用的是python技术,鉴于python的强大,在自自动部署上有fabric这个一个强大的工具,阅读本文除了略懂python,fabric,还需要安装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的更多相关文章
- 使用 Fabric 自动化部署 Django 项目
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在上一篇教程中,我们通过手工方式将代码部署到了服务器.整个过程涉及到十几条命令,输了 ...
- fabric 自动化部署
fabric 项目发布和运维的工作相当机械,频率还蛮高,导致时间浪费在敲大量重复的命令上. 修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A ...
- Centos7.6上利用docker搭建Jenkins来自动化部署Django项目
一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚. 整个过程相当复 ...
- 在阿里云Centos7.6上利用docker搭建Jenkins来自动化部署Django项目
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_84 一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更 ...
- Django 1.6 最佳实践: django项目的服务器自动化部署(转)
原文:http://www.weiguda.com/blog/41/ 当我们设置服务器时, 不应该每次都使用ssh登录服务器, 再按照记忆一步一步的配置. 因为这样实在是太容易忘记某些步骤了. 服务器 ...
- 用 Fabric 实现自动化部署
自动化部署代码 http://liyangliang.me/posts/2015/06/deploy-applications-using-fabric/ http://fabric-docs-cn. ...
- 使用 Docker 让部署 Django 项目更加轻松
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 之前一系列繁琐的部署步骤让我们感到痛苦.这些痛苦包括: 要去服务器上执行 n 条命令 ...
- 使用Fabric自动化你的任务
Fabric是一个Python库,可以通过SSH在多个host上批量执行任务.你可以编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量远程服务器上自动运行.这些功能非常适合应用的自动化部署 ...
- Linux 自动化部署
1.pexpect Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Py ...
随机推荐
- Ubuntu中Samba的安装配置和使用[图文]
Samba服务在Ubuntu服务器版本中默认并没有安装. 1. Samba软件包的安装 使用源安装,在终端中输入如下命令: #sudo apt-get install samba#sudo apt-g ...
- 线性表(gcc实现)
线性结构: ①存在一个唯一的被称为“第一个”的数据元素: ②存在一个唯一的被称为“最后一个”的数据元素: ③除第一个元素外,每个元素均有唯一一个直接前驱: ④除最后一个元素外,每个元素均有唯一一个直接 ...
- 数据库安全之TDE列加密
透明数据加密(Transparent Data Encryption) TDE - 基于列的加密 由于有了Oracle的TDE-基于列的加密,你所要做的只是定义需要加密的列,Oracle将为包含加密列 ...
- Java字符串的最大长度
在cpp中为了可移植性,string的长度是string::size_type,突然就想知道java允许的最大字符串长度为多少.看String的源码: public final class Strin ...
- Xamarin改写安卓Residemenu控件
1.下载最新的Residemenu安卓代码.用intellig打开,重新编译一下. 2.需要将其中的Residemenu,用gradle编译生成*.aar文件格式. 2.1 下载gradle,配置环境 ...
- [AngularJS] angular-md-table for Angular material design
Download from npm:https://www.npmjs.com/package/angular-md-table +: Responsive: Has both Mobile view ...
- 用shape结合selector实现点击效果
<span style="font-family:Arial, Helvetica, sans-serif;font-size:18px;background-color: rgb(2 ...
- Java基础知识强化之IO流笔记03:throws的方式处理异常
1. 什么时候使用throws ? (1)定义功能方法时候,需要把出现的问题暴露出来,让调用者去处理.那么就通过throws在方法上标识. (2)有时候,我们是可以对异常进行处理的,但是又有些时候,我 ...
- 读书笔记--用Python写网络爬虫01--网络爬虫简介
Wiki - Web crawler 百度百科 - 网络爬虫 1.1 网络爬虫何时使用 用于快速自动地获取网络信息,避免重复性的手工操作. 1.2 网络爬虫是否合法 网络爬虫目前人处于早期的蛮荒阶段, ...
- Vitamio 多媒体框架 介绍
功能 Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染.Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐.到目前 ...