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 服务器安装参考链接。
最简单的方法在于,直接用 pip 安装,当然前提是安装好了 python 解释器。
pip install uwsgi
当然笔者这里是安装完了,就自动是全局配置,所以就可以在 Shell 终端使用 uwsgi 命令
效果如下:

当然要使用 uWSGI 服务器,还得配置好 django 项目根目录下的 uwsgi.ini 文件,该文件是 uWSGI 服务器的运行对象配置文件,我们可以在里面配置好 Django 项目的工作目录和与 nginx 服务器通信的 方式和 联络的 ip 和端口等等。
当然并非一定要在 django 根目录下,创建 uwsgi.ini 文件,只不过为了项目的整体性考虑,一般与项目有关联的文件自然最好是放在项目的根目录下,方便修改,这里利用 软连接就可以了,前面提到的 nginx.conf 也一样,在项目根目录下创建项目的 项目名.conf 文件并软连接到 nginx 服务器的conf/ 目录下。
在 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 文件TCP socket ,如 0.0.0.0:9999 这是使用 TCP sockethttp 的,自然是使用 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')"
先 cd 到 Django 项目根目录下,然后在 Shell 终端运行如下命令:(启动 uWSGI 服务器,开始监听端口,uwsgi.ini是已经在 Django 项目根目录下存在的,所以在项目根目录下,启动该文件)
uwsgi --ini uwsgi.ini
关闭 uWSGI 监听服务
uwsgi --stop uwsgi.pid
推荐使用快捷键关闭 uWSGI 服务器
Ctrl + c