环境: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:
[uwsgi]
# 使用nginx连接时使用
socket=127.0.0.1:8090
# 直接做web服务器使用 python m

本文介绍了如何在Ubuntu18.04上使用uwsgi和Nginx部署Django项目,包括基本配置、静态文件处理、Nginx反向代理以及负载均衡的实现。详细步骤涵盖了uwsgi的安装、Django设置调整、Nginx配置文件的编写以及静态文件的收集。最后,通过Nginx实现了请求的分发和负载均衡。
最低0.47元/天 解锁文章
1919

被折叠的 条评论
为什么被折叠?



