目录
Django 项目生产环境配套教程链接
Linux - Django + Mysql + Nginx + uwsgi 部署项目 - 安装 nginx 服务器 - (1)
Linux - Django + Nginx + uWSGI 部署项目 - 安装 Python3.x -(2)
Linux - Django + Nginx + uwsgi 部署项目 - rpm 包安装 Mysql 5.x 服务器 - 删除 Mysql 服务器 - 解决创建新数据库的utf8编码问题(3)
一、安装 uWSGI 服务器及项目间的联动文件
安装方法有两种,这里就不阐述麻烦的方法,看此文最后的 uWSGI 服务器安装参考链接。
最简单的方法在于,直接用 pip 安装,当然前提是安装好了 python 解释器。
pip install uwsgi
当然笔者这里是安装完了,就自动是全局配置,所以就可以在 Shell 终端使用 uwsgi
命令
效果如下:
当然要使用 uWSGI 服务器,还得配置好 django 项目根目录下的 uwsgi.ini
文件,该文件是 uWSGI 服务器的运行对象配置文件,我们可以在里面配置好 Django 项目的工作目录和与 nginx 服务器通信的 方式和 联络的 ip 和端口等等。
当然并非一定要在 django 根目录下,创建 uwsgi.ini
文件,只不过为了项目的整体性考虑,一般与项目有关联的文件自然最好是放在项目的根目录下,方便修改,这里利用 软连接就可以了,前面提到的 nginx.conf
也一样,在项目根目录下创建项目的 项目名.conf
文件并软连接到 nginx 服务器的conf/
目录下。
1. 配置项目根目录下 uwsgi.ini 文件
在 Django 项目根目录下创建 uwsgi.ini
文件,并输入如下内容:(仅供参考用)
[uwsgi]
uid=Myuser # 当前我的用户名
gid=work # 当前我的用户名所属的用户组
project=MyDjangoProject # 项目名
base=/home/XXX/MyDjangoProject # 项目根目录
#module=%(project).wsgi:application # wsgi文件位置
wsgi-file=/home/XXX/MyDjangoProject/MyDjangoProject/wsgi.py
#home = %(base)/Env/%(project) # 设置项目虚拟环境,Docker部署时不需要
#chdir=%(base)/%(project) # 设置工作目录
#module=%(project).wsgi # wsgi文件位置
#http=0.0.0.0:9566
socket=/home/XXX/MyDjangoProject/MyDjangoProject.sock
pidfile=uwsgi.pid
processes=4
threads=2
# socket权限设置
chmod-socket=664
# 服务停止时,自动移除unix socket和pid文件
vacuum=True
master=True
# 设置自中断时间
harakiri=300
# 设置缓冲
post-buffering=6553600
# 超时
http-timeout=600
注意:uWSGI 服务器和 Nginx 服务器之间有3种通信方式, unix socket
,TCP socket
和http
。Nginx 服务器的配置必须与 uwsgi.ini
文件的配置保持一致,这样 Nginx 和 uWSGI 服务器才能架起连通的桥梁。
- 使用
unix socket
的,必然使用了 后缀名为.sock
文件 - 使用 内部ip:端口 的,是
TCP socket
,如 0.0.0.0:9999 这是使用TCP socket
- 使用
http
的,自然是使用http=
而不是socket=
,注意这里的http
和socket
只能存在一个,用了socket
,就不能用http
了,看到上面的uwsgi.ini
的配置http
配置,被我注释掉了。
sock 文件目前尚有问题,即unix socket
连接,先不做介绍!!!
先采用 TCP socket
让 nginx 服务器与 uWSGI 服务器做对接
不过先可以给出创建 sock 文件的命令:
python -c "import socket ; sock = socket.socket(socket.AF_UNIX); sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1);sock.bind('/home/work/www/outsource1.0')"
2. 运行和关闭 uWSGI 服务器的命令
先 cd 到 Django 项目根目录下,然后在 Shell 终端运行如下命令:(启动 uWSGI 服务器,开始监听端口,uwsgi.ini
是已经在 Django 项目根目录下存在的,所以在项目根目录下,启动该文件)
uwsgi --ini uwsgi.ini
关闭 uWSGI 监听服务
uwsgi --stop uwsgi.pid
推荐使用快捷键关闭 uWSGI 服务器
Ctrl + c