部署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