linux环境部署uwsgi+nginx04

1、基本架构
web服务器:专注提供静态文件内容,擅长处理http协议
app服务器:专注提供动态内容,代码服务运行环境
在这里插入图片描述
部署架构

在这里插入图片描述
在这里插入图片描述

2、代码上传
安装git
注意配置过滤文件:.gitignore

.idea
.pytest_cache
__pycache__
*.pyc
report
upload
logs
djenv  # 虚拟环境

3、安装python3
创建虚拟环境

python3 -m venv djenv

进入虚拟环境

source djenv/bin/activate

生成依赖库文件

pip3 freeze > requirements.txt

python依赖库安装

pip3 install -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package

4、Django生产环境配置
DEBUG:生产模式下需要设置为Fasle
ALLOWED_HOSTS:监听所有的请求 --设置为*
DATABASES:数据库相关参数
部分清单参考:https://docs.djangoproject.com/zh-hans/3.2/howto/deployment/checklist/#

5、django托管服务器uWSGI

安装: pip3 install uwsgi -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
启动: uwsgi xxx.ini  # ini是配置文件,保存启动项参数
重启: uwsgi -reload xxx.pid  # pid是进程文件
停止: uwsgi --stop xxx.pid

6、nginx安装
Nginx是一个高性能的http和反向代理服务器,其特点是占用内存小,并发能力强。
可作为web服务器、反向代理、负载均衡。

1)安装:

yum install -y nginx  # CentOS
apt-get install -y nginx  # Ubuntu
nginx -version

2)自带常用命令:

"""
nginx -s stop  快速关闭Nginx,可能不保存相关信息,并迅速终止web服务
nginx -s quit  平稳关闭Nginx,保存相关信息,有安排的结束web服务
nginx -s reload  因改变了Nginx相关配置,需要重新加载配置而重载(使用nginx命令停止,推荐这个)
nginx -t  不运行,仅仅测试配置文件。nginx将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件
nginx -v  显示 nginx 的版本
"""

启动:

# 在centos7+启动nginx服务
systemctl start nginx
# 或,简单粗暴一句,通过这种方式启动nginx使用systemctl status nginx查看的状态是未运行
nginx

3)nginx配置文件:

"""
/etc/nginx/nginx.conf  # 主配置文件
/etc/nginx/conf.d/*.conf  # 次配置文件
/etc/nginx/default.d/*.conf  # 次配置文件
"""

修改nginx配置的用户

vim /etc/nginx/nginx.conf

在这里插入图片描述
把nginx.conf里的server配置复制到新创建的/etc/nginx/conf.d/autop.conf文件,并添加静态文件路径

location / {
        #root         /root/software/autotpsite/dist;
        alias         /root/software/autotpsite/dist/;
}

修改完重启:systemctl restart nginx(centos6上重启:service nginx restart

配置反向代理:
在这里插入图片描述
正向代理(嵌到客户端的,客户端知道请求是从代理发出去)

配置负载均衡:

  • hash模式:ip_hash,A客户端是127.0.0.1,以后一直是127.0.0.1
  • 权重模式:weight
upstream autpserver {
    #ip_hash 127.0.0.1:8081;
    server 127.0.0.1:8081 weight=1;
    server 192.168.21.140:8081 weight=2;
}

location /api/ {
    proxy_pass http://autpserver;
}

7、防火墙配置
添加

firewall-cmd --zone=public --add-port=80/tcp --permanent  # permanent永久生效,没有此参数重启后失效

重新载入

firewall-cmd --reload

查看已开启的端口

firewall-cmd --list-port

在这里插入图片描述

名词解释:
WSGI(Web Server Gateway Interface)是Web服务器网关接口。属于web服务器和应用程序之间的通信协议。
uwsgi是uWSGI服务器使用的本地协议。它是一个二进制协议,可以携带任何类型的数据。属性线路协议。
uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。
Django是一个Web框架,框架的作用在于处理request和reponse,其他的不是框架所关心的内容。所以如何部署Django不是Django所需要关心的。Django所提供的是一个开发服务器,这个开发服务器,没有经过安全测试,而且使用的是Python自带的simple HTTPServer创建的,在安全性和效率上都是不行的。
Nginx是一个Web服务器其中的HTTP服务器功能和uWSGI功能很类似,但是Nginx还可以用作更多用途,比如最常用的反向代理功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍婧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值