shell脚本编程实践(九)

1 项目发布

1.1 基础知识

1.1.1 项目交付

基础知识

简介

    项目交付是一个涉及到多团队共同协作的事情,它包括 产品团队设计产品、研发团队开发产品、测试团队测试代码、运维团队发布代码和维护站点等工作。

请添加图片描述

项目交付的过程中,每个团队都有自己特有的一些工作特殊

请添加图片描述

一般情况下,项目交付在软件工程人员人员眼中的基本逻辑

请添加图片描述

代码发布

简介

    所谓的代码发布,其实就是一句话:将我们的代码放到一台公司的互联网服务器上。那么我们应该怎么来理解这句话呢?我们从三个方面来理解他。
发布什么?
    代码        经过测试,功能完善,没有问题的代码
发布到哪里?
    服务器        所有人都能访问的到的一台服务器(有公网IP)
                idc机房、阿里云、亚马逊、腾讯云、华为云、....
发布的效果?
    web网页    对外展示

发布方式

常见的代码发布方式有两种:手工方式和脚本方式。
样式1:手工发布代码
    慢、干扰因素多、不安全
样式2:脚本发布代码
    快、干扰因素少、安全

1.1.2 发布解读

基本流程

简介

    这里面的代码发布过程是侧重于手工级别的代码发布流程,在其他的一些基础设施环境中,虽然有一些区别,但是整个的流程脉络是一样的。

请添加图片描述

功能解读:
    获取代码 - 为什么? - 代码在远端服务器上
    打包代码 - 为什么? - 代码量太多,不好传输
    传输代码 - 为什么? - 本地主机没有代码
    关闭应用 - 为什么? - 防止用户访问出错
    解压代码 - 为什么? - 拉过来的是压缩包
    更新代码 - 为什么? - 要发布项目
    开启应用 - 为什么? - 刚才关闭了
    检查效果 - 为什么? - 万一失败了呢?
    对外开放 - 为什么? - 发布过程,没有让网上用户看到

流程详解

获取代码

    一般情况下,软件项目的网站代码都存放在一个稳定的代码服务器上,这个网站服务器叫代码仓库。

请添加图片描述

仓库分类
    公有仓库 - 使用互联网的代码服务器
    私有仓库 - 内部服务器或者公网服务器

实现方式
    集中式:svn的几乎所有操作命令,受本地主机和代码仓库的网络连接状态。
    分布式:git的几乎所有操作命令,不受代码仓库的网络连接状态限制。

打包代码

    所谓的打包代码,其实就是将获取的项目源代码进行打包操作

请添加图片描述

目的:
    减少传输文件数量
    减小传输文件大小
    增强传输速率

常见打包方式:
    windows:    zip、rar...
    linux:       tar、zip...

传输代码

    在一个临时的服务器环境上,进行项目代码的部署测试,如果没有问题的话,可以将该代码传输到生产服务器上.
    常见的传输方式如下:
有网情况下
    多种方式: git、ftp、scp、共享挂载 cp、rsync
没有网情况下
    物理方式: U盘或者硬盘

请添加图片描述

关闭应用

    发布代码的时候,肯定会对生产服务器上运行的项目产生影响,为了避免对互联网用户产生不必要的干扰,我们会将应用关闭。    
问题1:关闭什么应用
    代码所在的服务用到了什么应用,就关闭什么应用
问题2:应用相互依赖的情况下,如何确定关闭的顺序
    站在用户访问的角度,先关闭离客户近的,后关闭离客户远的。

解压代码

    这一步不是必须的,有些场景下,需要代码压缩包解压,有些不用

更新代码

    为了避免我们在放置代码过程中,对老文件造成影响,所以我们放置代码一般分为两步:备份老文件和放置新文件。
备份老文件:防止更新失败,导致旧有的成功运行的代码被覆盖。
放置新文件:将新代码放置到旧代码的位置

注意:
    两个文件的名称是一样的,只是内容不同
    对整个应用项目来说,两个文件没有区别

请添加图片描述
开启应用

    在代码放置完毕后,将刚才关闭了应用,开启就可以了
开启的顺序:
    先开启离客户远的,后开启离客户近的

请添加图片描述
检查效果

    为了防止发布后的效果不成功,我们手工方式或者其他方式检测网站的功能是否可以正常的访问

对外开放

    项目内部人员检查这次发布没有问题后,开放应用的流量入口,让用户使用新版本的服务

1.1.3 技术要点

解压缩

简介

文件的压缩
    压缩格式:tar zcvf 压缩后的文件名  将要压缩的文件
文件的解压
    解压格式:tar xf 压缩后的文件名
查看压缩文件内容
    查看格式:zcat 压缩文件
命令参数详解
    z    指定压缩文件的格式为 tar.gz
    c    表示压缩
    v    显示详细过程
    f    指定压缩文件
    x    解压
    C   制定解压位置

解压缩实践

压缩实践
[root@localhost ~]# mkdir tar_dir
[root@localhost ~]# echo nihao > tar_dir/nihao.txt
[root@localhost ~]# tar -zcvf nihao.tar.gz tar_dir/
tar_dir/
tar_dir/nihao.txt

查看压缩文件
[root@localhost ~]# zcat nihao.tar.gz
tar_dir/0000...6011213 5ustar rootroottar_dir/nihao.txt 00...4253652266013046 0ustar  rootrootnihao

解压文件
[root@localhost ~]# tar xf nihao.tar.gz -C /tmp/
[root@localhost ~]# cat /tmp/tar_dir/nihao.txt
nihao

传输

简介

scp传输工具:
    命令格式:scp  要传输的文件 要放置的位置

远程目标样式:
    远端主机文件放置位置的表示形式:
        远程连接的用户@远程主机:远程主机的目录路径
    远端主机文件位置的表示形式:
        远程连接的用户@远程主机:远程主机的文件路径
传输示例:
    将本地文件推送到远程主机
        scp file.tar.gz root@10.0.0.12:/root/
    将远程主机的文件拉取到本地
        scp root@10.0.0.12:/root/file.tar.gz ./

传输文件实践

本地文件传输远程
[root@localhost ~]# scp nihao.tar.gz root@10.0.0.13:/tmp/
Warning: Permanently added '10.0.0.13' (ECDSA) to the list of known hosts.
root@10.0.0.13's password:
nihao.tar.gz          100%  156   122.3KB/s   00:00

远程文件拉到本地
[root@localhost ~]# rm -f nihao.tar.gz
[root@localhost ~]# scp root@10.0.0.13:/tmp/nihao.tar.gz ./
root@10.0.0.13's password:
nihao.tar.gz        100%  156   112.3KB/s   00:00
[root@localhost ~]# zcat nihao.tar.gz
tar_dir/00007...213 5ustar  rootroottar_dir/nihao.txt0...046 0ustar  rootrootnihao

备份

实践

    文件的备份要有一定的标志符号,我们就使用目前通用的时间戳的形式来表示,关于时间戳,我们可以借助于 date命令来进行获取

date命令详解:
    命令格式:date [option]
    常见参数:
        %F        显示当前日期格式,%Y-%m-%d
        %T        显示当前时间格式,%H:%M:%S
备份命令效果格式:
    方式一:复制备份-源文件不动
        cp nihao nihao-$(date +%Y%m%d%H%M%S)
    方式二:移动备份-源文件没了
           mv nihao nihao-$(date +%Y%m%d%H%M%S)    

备份实践

复制备份
[root@localhost ~]# cp nihao.tar.gz nihao.tar.gz-$(date +%Y%m%d%H%M%S)
[root@localhost ~]# cp nihao.tar.gz nihao.tar.gz-$(date +%Y%m%d%H%M%S)

移动备份
[root@localhost ~]# mv nihao.tar.gz nihao.tar.gz-$(date +%Y%m%d%H%M%S)
[root@localhost ~]# ls nihao.tar.gz-*
nihao.tar.gz-20420620010300  nihao.tar.gz-20420620010304  nihao.tar.gz-20420620010311

1.2 手工发布

1.2.1 方案解读

基础知识

案例需求

    实现一套业务环境的项目发布流程,基本的网站架构效果如下:

请添加图片描述

架构解读:
    负载均衡采用Nginx服务,基于请求内容进行后端跳转
    动态应用使用的nginx 或者 uwsgi服务
    后端服务应用有多套编程语言研发的web项目。
        有基于java语言的sprintCloud框架开发的
        有基于python语言的django框架开发的
    我们要发布的是django后端服务代码

方案分析

项目部署分析

分析:
        2、python环境        --->  3、python虚拟环境
        1、django环境部署
            4、django软件安装
            5、项目基本操作
            6、应用基本操作
            7、view和url配置
                8、问题:只有本机能访问
                    9、方案代理---- 10、nginx
        11、nginx实现代理
            12、nginx软件安装
            13、nginx基本操作
            14、nginx代理的配置
                15、目录结构
                16、查看配置文件
                17、找到对应的代理配置项
        18、启动django
        29、启动nginx
        20、整个项目调试

环境部署方案

环境部署方案
一、django环境部署
    1.1 python虚拟环境
    1.2 django环境部署
        1.2.1 django软件安装
        1.2.2 项目基本操作
        1.2.3 应用基本操作
        1.2.4 view和url配置
二、nginx代理django
    2.1 nginx软件安装
        2.1.1 nginx软件安装
        2.1.2 nginx基本操作
    2.2 nginx代理配置
        2.2.1 目录结构查看
        2.2.2 配置文件查看
        2.2.3 编辑代理配置项
三、项目调试
    3.1 启动软件
        3.1.1 启动django
        3.1.2 启动nginx
        3.2 整个项目调试
1、施工方案的分析原理:基于需求关键点-查依赖-查流程
2、施工方案编写的流程:基于需求分析的流程,按结点输出方案

1.2.2 环境部署

基础环境

python软件部署

python软件部署
[root@localhost ~]# yum install python3 -y
[root@localhost ~]# python --version
Python 2.7.5
pip环境配置
(venv) [root@localhost ~]# mkdir ~/.pip
(venv) [root@localhost ~]#  cat ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = pypi.tuna.tsinghua.edu.<
  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值