首页 > 编程语言 >部署Python网站项目,测试灰度发布

部署Python网站项目,测试灰度发布

时间:2024-03-12 21:59:01浏览次数:37  
标签:index file Python server nginx html 灰度 测试 limit

部署Python网站项目

1安装python依赖软件

yum -y install gcc make python3 python3-devel

2安装项目依赖

pip3 install pytz-2022.6-py2.py3-none-any.whl pip3 安装.whl结尾的包

pip3 install Django-1.11.8-py2.py3-none-any.whl

pip3 install django-bootstrap3-11.0.0.tar.gz

3测试项目

python3 manage.py runserver 0.0.0.0:8000 设置ip访问,8000端口 访问 python自己即可跑服务

python-project-demo/learning_logs/templates/base.html 文件中的特效注释 因为连接不到外网 <!-- --> 注释里面的内容

<!-- {% bootstrap_css %}

{% bootstrap_javascript %}

-->

安装uWSGI

pip3 install uWSGI-2.0.21.tar.gz

vim myproject.ini

[uwsgi]

socket=127.0.0.1:8000 #与web服务(nginx)通信的接口

chdir=/root/python/python-project-demo #项目的工作目录

wsgi-file=learning_log/wsgi.py #指定项目中的wsgi.py配置文件

daemonize=/var/log/uwsgi.log #指定日志文件位置

#processes=4 #指定启动进程的数目

#master=true #开启主进程管理模式

运行uWSGI

uwsgi --ini myproject.ini #读取myproject.ini运行uWSGI

修改nginx配置文件,添加uWSGI转发

location / {

uwsgi_pass 127.0.0.1:8000; #动态页面交给uWSGI

include uwsgi_params; #调用uWSGI配置文件

root html;

index index.html index.htm;

}

创建动静分离

location /static {

root html;

index index.html;

}

配置Nginx实现用IP测试灰度发布

灰度发布=使用平稳的过渡方式升级或替换产品项目的方法

1)使用proxy主机在nginx配置中创建集群

http {...

upstream s8001 { #测试集群1

server 192.168.99.100:8001;

}

upstream s8002 { #测试集群2

server 192.168.99.200:8002;

}

upstream default { #正常业务集群

server 192.168.99.100:80;

server 192.168.99.200:80;

}

server {

listen 80;

server_name localhost;

...

set $group "default"; #定义变量$group,默认值default

if ($remote_addr ~ "192.168.99.1"){ #如果客户机ip是99.1就访问集群1 set $group s8001;

}

if ($remote_addr ~ "192.168.99.2"){ #如果客户机ip是99.2就访问集群1 set $group s8002;

}

location / {

proxy_pass http://$group; #调用集群

root html;

index index.html index.htm;

}

...

}

为web1新建nginx虚拟主机

http {...

server {

listen 8001;

server_name localhost;

root html8001;

index index.html;

}

为web2新建nginx虚拟主机

http {

...

server {

listen 8002;

server_name localhost;

root html8002;

index index.html;

}

通过不同用户ID测试灰度发布

使用proxy主机,要先还原nginx,并配置可以解析动态网页

vim html/home.php #修改php页面,将原有Welcome那行修改成以下状态

Welcome : <?php

if(preg_match("/^abc/",$_SESSION['login_user'])) {

preg_match匹配正则,如果登录账号是以abc开头,就连接99.100,否则连接99.200

echo "<a href='http://192.168.99.100'>开始</a>";

}

else

{

echo "<a href='http://192.168.99.200'>开始</a>";

}

?>

4 :配置网站限流限速

定义limit_rate限制

http {

... limit_rate 100k; #全局限速

server {

limit_rate 200k; #虚拟主机限速

listen 80;

server_name www.b.com;

root html;

index index.html;

location /file_a {

limit_rate 300k; #file_a目录限速300k

}

location /file_b {

limit_rate 0k; #file_b目录不限速 0=不限速度

}

}

2创建测试文件

Dd 创建需要大小的文件

dd if=/dev/zero 无限的0填充到 of=html/test.img 到这个位置 bs=100M 大小 count=1 填充几次

dd if=/dev/zero of=html/file_a/test.img bs=100M count=1

dd if=/dev/zero of=html/file_b/test.img bs=100M count=1

下载测试

wget www.a.com/test.img ip地址下面的文件

wget www.b.com/test.img

wget www.b.com/file_a/test.img

wget www.b.com/file_b/test.img

连接限制(非必须配置)

修改用户访问连接限制,使一个客户同时打开多个连接也无法突破限制

首先安装ngx_http_limit_conn_module模块

http {

limit_conn_zone 连接限制 $binary_remote_addr 二进制客户的IP zone=addr:10m; 记录文件存放IP 10M

server {

location /app {

limit_rate 30k;

limit_conn addr 1 ; 限制连接来访问下载的只能是1

}

防盗链

valid_referers指令可以检测被访问资源从哪个地址来

1)修改配置,添加防盗链测试语句

vim /usr/local/nginx/conf/nginx.conf

server {

valid_referers none 没有上一次的访问记录 192.168.99.100;

如果请求中的referer 头字段包含者地址是99.100或者没有referer 头字段则有效,

if ($invalid_referer){ #如果上述测试无效则条件成立

return 403; #返回错误提示

}

}

web1编写测试页面

cat html/index.html

web1

测试页面 --

<a href="http://192.168.99.100/nr.html">内容</a>

[root@web1 nginx]# cat html/nr.html

web1内容页面

web2编写测试页面

cat html/index.html

web2

测试页面 --

<a href="http://192.168.99.100/nr.html">内容</a>

测试,从192.168.99.100主页点内容可以访问,但从99.200点不可以

标签:index,file,Python,server,nginx,html,灰度,测试,limit
From: https://blog.csdn.net/mr_xiaomingzzzzz/article/details/136664576

相关文章

  • python数据分析 datawhale
    数据分析数据载入及初步观察载入数据导入Numpy和pandasimportnumpyasnpimportpandasaspd使用相对路径和绝对路径载入数据df=pd.read_csv('train.csv')df=pd.read_csv('/Users/chenandong/Documents/datawhale数据分析每个人题目设计/招募阶段/第一单元项目集......
  • Python入门学习笔记(1)Python&VS code下载与配置
    去年夏天,笔者拿到EricMatthes所著的蟒蛇书,一番学习下,为其细致与条理所触动。作为曾经学过C++的NOIP退役选手,笔者深知一个好的语言基础对于后续学习的巨大作用。费曼提到,把新知识、复杂概念解释给完全不懂的人听,是最好的提升知识质量、把知识点融入自己的知识体系的方法。因此......
  • Python实战:变量命名规范:编写优雅代码的关键
    在Python编程中,变量命名规范对于编写优雅和可维护的代码至关重要。本文将深入探讨Python中的变量命名规则和最佳实践,包括命名约定、避免命名冲突以及命名中的注意事项。我们将通过具体的代码示例来展示如何遵循命名规范来编写优雅的代码,并理解命名规范在编程中的重要性。1.......
  • Python实战:Python注释:编写清晰程序说明书
    在Python编程中,注释是编写清晰程序说明书的最佳实践。本文将深入探讨Python中的注释,包括注释的类型、使用方法和最佳实践。我们将通过具体的代码示例来展示如何使用不同类型的注释来编写程序说明,并理解注释在编程中的重要性。1.注释简介注释是编程语言中用于解释代码的可......
  • 力扣hot100题解(python版69-73题)
    69、有效的括号给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例1:输入:s="()"输出:true示例2:输入:s="()[......
  • 01Python基础
    Python基础按照约定俗成的惯例,应该始终坚持使用4个空格的缩进。Python程序是大小写敏感的,如果写错了大小写,程序会报错。数据类型和变量数据类型整数任意大小的整数,包括负整数,和数学上的写法一致。十六进制,用0x前缀和0-9,a-f表示对于很大的数,100000000,可以写成100_00......
  • python singledispatch 使用简单说明
    singledispatch可以实现类似方法的范型能力,以下是使用的简单说明方法参考代码fromfunctoolsimportsingledispatch@singledispatchdefadd(a,b):returnf"default---{a}-{b}" @add.registerdef_(a:int,b:int)->int:returna+b......
  • Python-使用openpyxl读取excel内容
    1.本篇文章目标将下面的excel中的寄存器表单读入并构建一个字典2.openpyxl的各种基本使用方法2.1打开工作簿wb=openpyxl.load_workbook('test_workbook.xlsx')2.2获取工作簿中工作表名字并得到工作表ws=wb[wb.sheetnames[0]]wb.sheetnames会返回一个列表,列表中......
  • Python基于微博的舆论分析,舆论情感分析可视化系统(V5.0),附源码
    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • Python的特性——跟老吕学Python编程
    Python的特性——跟老吕学Python编程Python的特性1.Python易学易用2.Python是解释型语言3.Python是交互式的4.Python是一种多范式语言5.Python的标准库6.Python是开源的7.Python是跨平台的8.用于GUI应用程序的Python9.Python的数据库连接10.Python是可扩展的11.Python拥......