文档章节

一个网站的诞生10--自动化部署

brian_2017
 brian_2017
发布于 2017/01/17 09:42
字数 623
阅读 15
收藏 0

所谓自动部署就是说,如果用10台机器跑tornado程序提供Web服务,它们上面的代码都是一样的,这也叫生产环境。在公司写新代码,写好了,测试通过,这叫开发环境。然后执行自动部署程序,它把新代码提交到版本管理服务器,然后连上生产环境的10台服务器,让它们更新代码,再重启tornado程序,新代码就上线了,用户看到的就是新发布的网站。

自动部署的关键是两个东西,一个是版本服务器,一个是远程操作。

推荐用git版本服务器,推荐寥雪峰的git教程,写得非常清晰,是目前为止我见到的最容易入手的,链接在这里http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

推荐用python fabric远程操作,http://www.fabfile.org/

做自动化部署,第一步是创建一个公网IP的git版本服务器,这样10台web server能访问git服务器。然后在开发环境把代码提交到git版本服务器。这个过程请参考寥同学的教程,这里就不重复了。

第二步,ssh登录到任意一台web server,手动执行命令,从git服务器更新代码,然后把tornado程序开起来,记下这个过程的所有步骤。

第三部,用fabric把第二步的步骤写一遍,填上10台web server的ip地址,将来就可以一次性更新10台机器了。

zuijiacanting.com的自动化部署脚本类似如下,remote_deploy.py:

#!/usr/bin/env python
#! -*- coding:utf-8 -*-

from __future__ import with_statement
import os
from fabric.api import *

#ip of web server
env.hosts=['106.111.111.111']

def commit_to_remote():
    d = os.path.abspath("xx/yy")
    local("cd %s;git push origin master" % d)

def deploy_zjct():
    code_dir="/home/xxx/yyy"
    with cd(code_dir):
        run("sudo git pull origin master")
        run("sudo reboot")
在开发环境下,如果新代码已经准备好了,执行命令"fab -f remote_deploy.py commit_to_remote",把新代码提交到git版本服务器,然后再执行"fab -f remote_deploy.py deploy_zjct",fabric以ssh的方式登录到web server,更新代码,然后重启。重启运行新代码。不重启也可以,kill掉tornado进程,自动监控会重启tornado进程,重启后也是运行新代码。如果要更新多台机器,在env.hosts把ip地址加进去就可以了。

fabric能做的事情非常多,不仅仅是上面这么简单,可以实现各种酷炫的特效。

© 著作权归作者所有

brian_2017
粉丝 3
博文 61
码字总数 145216
作品 0
私信 提问
5分钟快速安装thinkphp5.1

简介 ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色...

游客icvsasieod266
07/06
0
0
《大型网站技术架构》——第二章 大型网站架构模式

分层 横向维度 上层对下层的依赖和调用 合理规划层次边界和接口 禁止跨层次的调用及逆向调用 分割 纵向切分 分布式 将不同模块部署在不同的服务器上,通过远程调用协同工作。 问题: 调用通过...

wsjtwmy
2018/12/02
0
0
手把手教你使用 netlify 实现前端的 自动部署 + HTTPS

随着开源工具越来越多,特别是nodejs构建微服务器之快,实现前端自动化部署越来越简单了,有可能【10行js代码+10行sh脚本+设置github的webhook】就能实现,但是如果你和我一样,就是“懒”(...

大雄的学习人生
2018/05/20
0
0
6.2、 产品经理甩锅指南-CI环境

上次在这里提到了敏捷开发scrum,6、产品经理和包工头的故事,敏捷开发背景下,还有CI(持续集成)环境,持续交付和持续部署。 小奈:今天捅了个篓子,我只是叫开发,修改个导航栏而已。 也测试...

产品经理的技术课堂
2018/06/01
0
0
高可用高并发的 9 种技术架构!

1、分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。...

冷_6986
2018/06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部