环境: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
&#