使用uwsgi+Nginx作为Django的web服务器

本文介绍了如何在Ubuntu18.04上使用uwsgi和Nginx部署Django项目,包括基本配置、静态文件处理、Nginx反向代理以及负载均衡的实现。详细步骤涵盖了uwsgi的安装、Django设置调整、Nginx配置文件的编写以及静态文件的收集。最后,通过Nginx实现了请求的分发和负载均衡。
摘要由CSDN通过智能技术生成

环境:Ubuntu18.04LTS+Pycharm18.03Pro+ 虚拟环境Python3.6

1、uwsgi+Nginx作为Django的web服务器

1、 安装
pip install uwsgi

2、更改Django中的settings.py文件

设置调试模式为False和设置ALLOWED_HOSTS :

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['*']

3、项目中建立一个uwsgi.ini文件

[uwsgi]
# 使用nginx连接时使用
# socket=127.0.0.1:8090
# 直接做web服务器使用 python manage.py runserver
http=127.0.0.1:8090
# 项目目录
chdir=/home/toohoo/PycharmProjects/mydailyfresh
# 项目中的wsgi.py文件的目录, 相当于项目目录, 里面有项目的入口
wsgi-file=mydailyfresh/wsgi.py
# 指定启动的工作进程数
processes=4
# 指定工作进程中的线程数
threads=2
master=True
# 保存启动之后主进程的pid
pidfile=uwsgi.pid
# 设置uwsgi后台运行,uwsgi.log保存日志信息
daemonize=uwsgi.log
# 设置虚拟环境的路径
virtualenv=/home/toohoo/PycharmProjects/mydailyfresh/venv

4、uwsgi的启动和停止
启动:uwsgi --ini 配置文件路径 例如:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid 路径 例如:uwsgi --stop uwsgi.pid

(venv) toohoo@ubuntu:~/PycharmProjects/mydailyfresh$ ps aux|grep uwsgi
toohoo    35637  0.0  0.0  21548  1080 pts/0    S+   18:02   0:00 grep --color=auto uwsgi
(venv) toohoo@ubuntu:~/PycharmProjects/mydailyfresh$ ls
apps  celery_tasks  data  db  db.sqlite3  deploy  manage.py  mydailyfresh  __pycache__  README.md  requirement  static  templates  utils  uwsgi.ini  venv
(venv) toohoo@ubuntu:~/PycharmProjects/mydailyfresh$ uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
(venv) toohoo@ubuntu:~/PycharmProjects/mydailyfresh$ ps aux|grep uwsgi
toohoo    35647 21.5  0.5 132688 41540 ?        S    18:03   0:00 uwsgi --ini uwsgi.ini
toohoo    35649  0.0  0.4 206420 32796 ?        Sl   18:03   0:00 uwsgi --ini uwsgi.ini
toohoo    35651  0.0  0.4 206420 32796 ?        Sl   18:03   0:00 uwsgi --ini uwsgi.ini
toohoo    35652  0.0  0.4 206420 32796 ?        Sl   18:03   0:00 uwsgi --ini uwsgi.ini
toohoo    35655  0.0  0.4 206420 32796 ?        Sl   18:03   0:00 uwsgi --ini uwsgi.ini
toohoo    35656  0.0  0.5 140884 38584 ?        S    18:03   0:00 uwsgi --ini uwsgi.ini
toohoo    35659  0.0  0.0  21548  1108 pts/0    S+   18:03   0:00 grep --color=auto uwsgi

可以看到服务已经在后台启动起来了。

5、访问
浏览器访问:http://127.0.0.1:8090/的时候,首页显示成功,但是静态文件加载不出来,因为当设置DEBUG = False的时候,Django自身也不能帮助我们显示静态文件了。因此使用Nginx来帮助我们。
6、停止

(venv) toohoo@ubuntu:~/PycharmProjects/mydailyfresh$ ls
apps          data  db.sqlite3  manage.py     __pycache__  requirement  templates  uwsgi.ini  uwsgi.pid
celery_tasks  db    deploy      mydailyfresh  README.md    static       utils      uwsgi.log  venv
(venv) toohoo@ubuntu:~/PycharmProjects/mydailyfresh$ uwsgi --stop  uwsgi.pid
(venv) toohoo@ubuntu:~/PycharmProjects/mydailyfresh$ ps aux|grep uwsgi
toohoo    35941  0.0  0.0  21548  1152 pts/0    S+   18:15   0:00 grep --color=auto uwsgi

可以看到停止了uwsgi。

上面的是最基础的服务器配置:原理框图:
在这里插入图片描述
可见上面的基础框架并不能满足我们的访问需求,还要用Nginx来加上一层静态文件的处理:
在这里插入图片描述
7、Nginx和uwsgi对接:
配置文件的更改:

[uwsgi]
# 使用nginx连接时使用
# socket=127.0.0.1:8090
# 直接做web服务器使用 python manage.py runserver
http=127.0.0.1:8090
...

改成,在地址的前面去掉http加上socket&#

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值