课时154:项目发布_手工发布_手工发布

1.2.3 手工发布

学习目标

这一节,我们从 基础知识、简单实践、小结 三个方面来学习

基础知识

简介

	为了合理的演示生产环境的项目代码发布,同时又兼顾实际实验环境的资源,我们这里将 B主机和C主机 用一台VM主机来实现,A主机单独实现。这两台主机的ip地址相关内容如下:A主机:10.0.0.12   B主机: 10.0.0.13

在这里插入图片描述

	为了体现整个实践操作的标准化,在这里进行所有目录的统一规划:代码存储目录: /data/codes/django打包文件目录: /data/codes脚本相关目录: /data/scripts备份文件目录: /data/backup/django项目代码目录: /data/server/web_site

简单实践

代码准备-10.0.0.13

准备待发布代码
[root@localhost ~]# mkdir /data/codes
[root@localhost ~]# cd /data/codes/
[root@localhost /data/codes]# mkdir django
[root@localhost /data/codes]# scp root@10.0.0.12:/data/server/web_site/app1/views.py django/
[root@localhost /data/codes]# cat django/views.py
from django.shortcuts import render
from django.http import HttpResponse# Create your views here.
# 定制后端业务逻辑处理函数
def hello(request):return HttpResponse("web_site v0.1\n")

代码获取-10.0.0.13

我们借助于sed的方式模拟代码获取修改后的代码
[root@localhost /data/codes]# sed -i 's#0.1#0.2#' django/views.py
[root@localhost /data/codes]# grep web_site django/views.pyreturn HttpResponse("web_site v0.2\n")

打包代码-10.0.0.13

打包文件
[root@localhost /data/codes]# tar zcf django.tar.gz django/
[root@localhost /data/codes]# ls
django  django.tar.gz确认文件信息
[root@localhost /data/codes]# zcat  django.tar.gz
django/0000...026 5ustar  rootrootdjango/views.py000...12531 0ustar  rootrootfrom django.shortcuts import render
from django.http import HttpResponse# Create your views here.
# 定制后端业务逻辑处理函数
def hello(request):return HttpResponse("web_site v0.2\n")

传输代码-10.0.0.12

在制定的目录下获取远程代码目录
[root@localhost ~]# mkdir /data/codes
[root@localhost ~]# cd /data/codes/
[root@localhost ~]# scp root@10.0.0.13:/data/codes/django.tar.gz ./

关闭应用-10.0.0.12

前端准备数据迁移配置
[root@localhost ~]# mkdir /etc/nginx/conf.d
[root@localhost ~]# cat /etc/nginx/conf.d/update.conf
server {listen 6666;location / {index index.html;root /usr/share/nginx/update/;}
}准备数据迁移文件
[root@localhost ~]# mkdir /usr/share/nginx/update -p
[root@localhost ~]# echo '数据迁移中,请耐心等待,抱歉!!!' >> /usr/share/nginx/update/index.html
使用数据迁移配置
[root@localhost ~]# cat /etc/nginx/default.d/django.conf
location /hello/ {# proxy_pass http://localhost:8000;proxy_pass http://10.0.0.12:6666/;
}重启nginx服务
[root@localhost ~]# /usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost ~]# systemctl restart nginx
检查效果
[root@localhost ~]# netstat -tnulp |grep nginx
tcp        0      0 0.0.0.0:6666   0.0.0.0:*   LISTEN      92562/nginx: master
tcp        0      0 0.0.0.0:80     0.0.0.0:*   LISTEN      92562/nginx: master
tcp6       0      0 :::80          :::*        LISTEN      92562/nginx: master
[root@localhost ~]# curl www.superopsmsb.com/hello/
数据迁移中,请耐心等待,抱歉!!!
关闭后端的django服务
[root@localhost ~]# kill $(lsof -Pti :8000)
[root@localhost ~]# netstat -tnulp | grep 8000
[root@localhost ~]#

解压代码-10.0.0.12

[root@localhost ~]# cd /data/codes
[root@localhost /data/codes]# tar xf django.tar.gz

备份文件-10.0.0.12

备份老文件
[root@localhost /data/codes]# mkdir /data/backup/django -p
[root@localhost /data/codes]# mv /data/server/web_site/app1/views.py /data/backup/django/views.py-$(date +%Y%m%d%H%M%S)
[root@localhost /data/codes]# ls /data/server/web_site/app1/views.*
ls: 无法访问/data/server/web_site/app1/views.*: 没有那个文件或目录放置新文件
[root@localhost /data/codes]# mv /data/codes/django/views.py /data/server/web_site/app1/
[root@localhost /data/codes]# ls /data/server/web_site/app1/views.*
/data/server/web_site/app1/views.py
[root@localhost /data/codes]# grep web_site /data/server/web_site/app1/views.pyreturn HttpResponse("web_site v0.2\n")

开启应用-10.0.0.12

开启后端django服务
[root@localhost /data/codes]# source /data/virtual/venv/bin/activate
(venv) [root@localhost /data/codes]# cd /data/server/web_site/
(venv) [root@localhost /data/server/web_site]# python manage.py runserver >> /dev/null 2>&1 &
[1] 92774
(venv) [root@localhost /data/server/web_site]# deactivate
[root@localhost /data/server/web_site]#检查效果
[root@localhost ~]# netstat -tnulp | grep 8000
tcp        0      0 127.0.0.1:8000  0.0.0.0:*    LISTEN      92776/python
修改前端nginx服务入口
[root@localhost ~]# cat /etc/nginx/default.d/django.conf
location /hello/ {proxy_pass http://localhost:8000;# proxy_pass http://10.0.0.12:6666/;
}重启nginx服务
[root@localhost /data/server/web_site]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost /data/server/web_site]# systemctl restart nginx

内部检查-10.0.0.12

检查效果
[root@localhost /data/server/web_site]# curl www.superopsmsb.com
hello nginx
[root@localhost /data/server/web_site]# curl www.superopsmsb.com/hello/
web_site v0.2

对外开放

接收外部用户流量即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp vue2 首页生命周期函数等待app.vue加载完毕后执行

代码 //main.js Vue.prototype.$onLaunched new Promise((resolve) > {Vue.prototype.$isResolve resolve })//app.vue // 模拟异步请求setTimeout(() > {this.$isResolve()}, 2000)// index.vue async onLoad() {await this.$onLaunchedconsole.log(onload执行)},注…

UOS常用命令

shutdown 关机 reboot 重启 reboot -f 强制重启 history 查看使用的历史命令 history -c 清空命令行常见目录结构 /bin 存储常用用户指令 /boot 存放用于系统引导时使用的各种文件 /dev 存放设备文件 /etc 存放系统,服务的配置…

Arduino入门2——常用函数及用法

Arduino入门2——串口驱动函数及用法 IO串口 上期,我们简单的认识了一下Arduino,浅浅的入了个门,这一期我们介绍以下Arduino串口常用的函数及用法 IO 常用串口库函数如下: 函数名用法及解析pinMode()用于IO口初始化digitalWrite…

2024050802-重学 Java 设计模式《实战模板模式》

重学 Java 设计模式:实战模版模式「模拟爬虫各类电商商品,生成营销推广海报场景」 一、前言 黎明前的坚守,的住吗? 有人举过这样一个例子,先给你张北大的录取通知书,但要求你每天5点起床,12点…

Proteus 新建工程

Proteus 新建工程 新建简单工程 首先在File工具栏中点击New Project,弹出新建工程向导程序(New Proteus Wizard) 填写工程名称与存储路径,选择New Proteus并点击Next进行下一步设置 我们不需要生成PCB文件,一路默认,点击Next即…

实战计算机网络02——物理层

实战计算机网络02——物理层 1、物理层实现的功能2、数据与信号2.1 数据通信模型2.2 通信领域常用术语2.3 模拟信号和数字信号 3、信道和调制3.1 信道3.2 单工通信、半双工通信、全双工通信3.3 调制3.4 奈式准则3.5 香农定律 4、传输媒体4.1 导向传输媒体4.2 非导向传输媒体 5、…

分布式系统与集群:区别与联系

文章目录 一、分布式和集群1.1 分布式和集群的区别1.2 分布式和集群的联系1.3 总结 二、细节补充2.1 为什么内容分发网络 CDN 被归类为分布式系统而不是集群? 参考资料 一、分布式和集群 分布式(distributed)是指在多台不同的服务器中部署不…

009.ResNet-FashionMNIST-正确率93.739

一、ResNet简介 ResNet是一次CNN网络架构,核心思想是引入"残差学习"来解决深层网络难以训练的问题。在传统的网络中,每一层都直接尝试学习目标映射。相反,ResNet通过跨层连接,允许某一层学习输入与输出之间的残差&…

高级人工智能复习 题目整理 中科大

题目整理 填空 1.准确性,复杂性,验证集 2. 3 2 n 3^{2^n} 32n 3 C 2 n m 3^{C^m_{2n}} 3C2nm​ 3 m 3^m 3m n 1 n1 n1 3. 状态 从状态s采取行动a后继续采用策略 π \pi π的收益 环境 4. 语法 语义 推理规则 5. 参与者,策略集&#xff…

Elasticsearch 8.1官网文档梳理 - 十一、Ingest pipelines(管道)

Ingest pipelines 管道(Ingest pipelines)可让让数据在写入前进行常见的转换。例如可以利用管道删除文档(doc)的字段、或从文本中提取数据、丰富文档(doc)的字段等其他操作。 管道(Ingest pip…

Vite支持的React项目使用SASS指南

前言 在现代前端开发中,SASS是一种广受欢迎的CSS扩展语言,它提供了许多实用功能,如变量、嵌套、部分和混合等。 本教程将指导您在一个使用Vite作为构建工具的React项目中如何配置和使用SASS。 使用步骤 1、创建一个Vite React项目 首先确…

VirtualBox、Centos7下安装docker后pull镜像问题、ftp上传文件问题

Docker安装篇(CentOS7安装)_docker 安装 centos7-CSDN博客 首先,安装docker可以根据这篇文章进行安装,安装完之后,我们就需要去通过docker拉取相关的服务镜像,然后安装相应的服务容器,比如我们通过docker来安装mysql,…

vue 使用 ztree 超大量数据,前端树形结构展示

ztree 是一个很经典的基于jquey开发的树结构编辑展示UI组件库。 创建一个文件 ztree.vue&#xff0c;代码如下&#xff1a; <template><div><div class"ztree vue-giant-tree" :id"ztreeId"></div><div class"treeBox&q…

Android 14 蓝牙主从模式切换

切换蓝牙的A2DP&#xff08;高级音频分布配置文件&#xff09;和AVRCP&#xff08;音频/视频远程控制配置文件&#xff09;的源&#xff08;source&#xff09;和汇点&#xff08;sink&#xff09;模式。 这里&#xff0c;SystemProperties.get尝试获取bluetooth.profile.a2dp.…

在WSL2的Ubuntu中安装和使用Docker/Podman

在WSL2的Ubuntu中安装和使用Docker/Podman 0. 目的 当网络环境良好&#xff08;例如在公司&#xff0c;能直接访问Google等&#xff09;时&#xff0c; Docker/Podman 安装和使用不是问题。 当网络环境不佳&#xff08;例如在家里&#xff09;&#xff0c;要把 WSL2 的 Ubun…

Termius安装docker

安装Termius 直接上官网 新建主机 更新一下yum 更新完成 安装docker的包 直接用命令安装 设置一下开机启动&#xff0c;可以查看docker的版本

Ui学习--UITableView

UI学习 UITableView基础UITableView协议UITableView高级协议与单元格总结 UITableView基础 UITableView作为iOS中的一个控件&#xff0c;用于以表格形式展示数据。例如通讯录好友&#xff0c;朋友圈信息等&#xff0c;都是UITableView的实际运用场景。 首先我们先要加入两个协…

Mysql的增、删、查、改

MySQL 是一个流行的关系型数据库管理系统&#xff0c;它支持 SQL&#xff08;结构化查询语言&#xff09;用于管理数据库中的数据。以下是使用 SQL 在 MySQL 中进行增&#xff08;INSERT&#xff09;、删&#xff08;DELETE&#xff09;、查&#xff08;SELECT&#xff09;、改…

K210使用雷龙NAND完成火灾检测

NAND 文章目录 NAND前言一、NAND是什么&#xff1f;二、来看一看NAND三、部署火灾检测 前言 前几天收到了雷龙NAND的芯片&#xff0c;一共两个芯片和一个转接板&#xff0c;我之前也没有使用过这款芯片&#xff0c;比较好奇&#xff0c;体验了一下&#xff0c;个人认为&#x…

嵌入式微处理器重点学习(三)

堆栈操作 R1=0x005 R3=0x004 SP=0x80014 STMFD sp!, {r1, r3} 指令STMFD sp!, {r1, r3}是一条ARM架构中的存储多个寄存器到内存的指令,这里用于将r1和r3寄存器的内容存储到栈上。STMFD(Store Multiple Full Descending)是一种全递减模式的多寄存器存储指令,它会先将栈指针…