当前位置: 代码网 > 服务器>服务器>Linux > Nginx+uWSGI部署实践

Nginx+uWSGI部署实践

2025年12月31日 Linux 我要评论
一:nginx + uwsgi部署框架首先用户浏览器向nginx发送请求,nginx判断是动态请求还是静态请求,如果是静态请求,则直接返回静态文件。如果是动态请求,则将请求转发给uwsgi服务器,uw

一:nginx + uwsgi部署框架

首先用户浏览器向nginx发送请求,nginx判断是动态请求还是静态请求,如果是静态请求,则直接返回静态文件。

如果是动态请求,则将请求转发给uwsgi服务器,uwsgi调用我们的django进行处理请求,然后一步一步的再返回。

1.1:wsgi接口

  • wsgi是web 服务器(uwsgi)与 web 应用程序或应用框架(django)之间的一种低级别的接口

1.2:uwsgi 服务器

  • uwsgi是一个web服务器,它实现了wsgi协议、uwsgi、http等协议。

1.3: uwsgi协议

  • uwsgi是nginx服务器和uwsgi服务器的通信协议,规定了怎么把请求转发给应用程序和返回。

二: uwsgi

2.1:uwsgi的安装

pip install uwsgi

2.2:uwsgi的配置

将django项目中的settings.py中的两个配置进行修改:

debug = false
allowed_hosts = [*]

在项目下新建一个配置文件uwsgi.ini:

[uwsgi]
# 1: uwsgi直接作为web服务器时,使用的ip和端口
http= 127.0.0.1:8000
    
# 2:指定项目的目录
chdir = /home/python/desktop/meiduo_mall_project/meiduo_mall

# 3: 指定项目中的wsgi.py所在的目录:(这个文件是usgi的启动入口)
wsgi-file = meiduo_mall/wsgi.py

# 4:指定uwsgi工作的进程数
processes = 4

# 5: 指定工作的每个进程下的线程数
threads = 2

# 6: 主进程的配置
master = true  # 开启主进程
pidfile = uwsgi.pid # 在项目中的wsgi.py所在的目录下,生成一个uwsgi.pid专门记录主进程的id

# 7: 指定uwsgi的日志文件
daemonize = uwsgi.log 

# 8:指定运行的虚拟环境的路径
virtualenv = /home/python/.virtualenvs/django_env

2.3:启动和停止

uwsgi --ini 配置文件路径

  • 例如:
uwsgi --ini uwsgi.ini

uwsgi --stop uwsgi.pid路径

  • 例如:
uwsgi --stop uwsgi.pid

三:uwsgi和nginx如何关联

3.1: 修改uwsgi的配置文件

[uwsgi]
# 1: uwsgi与nginx连接时,使用的ip和端口
socket = 127.0.0.1:8000

3.2: 修改nginx的配置文件

server {
    location / {
        # 包含uwsgi的请求参数
        include uwsgi_params;
        # 转交给uwsgi
        uwsgi_pass 127.0.0.1:8000
    }
}

四:nginx 配置静态文件

4.1:修改nginx的配置文件

# 增加一个location
location /static {
    # 指定静态文件存放的目录
    alias /var/www/static/;
}

4.2:将项目用到的所有静态文件指定到某个目录下

在django的settings配置文件中:

static_root = '/var/www/static/'

修改static文件的权限:

sudo chmod 777 /var/www/static/

运行命令:

python3 manage.py collectstatic

五:nginx转交请求给其他地址

案例:

celery实现了主页的页面静态化,我们想让如果前端传递的是主页,专门找我的一个nginx服务器去要。

5.1: nginx增加配置项

location = / {
    # 传递给静态文件的nginx服务器。
    proxy_pass http://192.168.203.153: 8082;
}

六: nginx实现负载均衡的配置

复制多台 uwsgi.ini文件修改文件(id和端口),根据这些文件启动django。

修改nginx配置文件:

# 1: 在server外面增加配置upstream
upstream 名字 {
    server 127.0.0.1: 8080;
    server 127.0.0.1: 8081;
}

# 2: 指定上游名字,则会随机选择其中一个转发。
location / {
    include uwsgi_params;
    uwsgi_pass 名字;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com