1. 安装uWSGI

# 直接使用pip安装
pip install uwsgi

# 查看版本
uwsgi --version
# 2.0.19.1

2. 验证uWSGI

新建文件test.py

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

执行启动中间件命令

uwsgi --http :8000 --wsgi-file test.py

打开浏览器访问http://localhost:8000,如果返回Hello World代表uwsgi安装和配置没有问题了。

配置外网访问: 如果需要在主机上访问虚拟机部署的项目需要绑定特定IP。

uwsgi --http 192.168.133.130:8000 --wsgi-file test.py

3. uwsgi 部署 Django

如果项目时采用前后端分离架构,那么在配置时使用–http-socket参数。

uwsgi --http :8000 --file mysite/mysite/wsgi.py

可能出现的问题: 1. 找不到模块

ModuleNotFoundError: No module named 'mysite.settings'

解决方案:是在设置环境变量前项目添加至系统目录。打开项目wsgi.py文件,添加如下代码:

import sys
path = '/home/path/to/project'
if path not in sys.path:
    sys.path.append(path)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

更通用的设置方法。

import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if BASE_DIR not in sys.path:
    sys.path.append(BASE_DIR)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

可能出现的问题: 2. sqlite有误

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required(found 3.7.17).

django需要使用sqlite 3.8.3版本,实际操作系统带的版本为3.7.17。解决方法是升级操作系统的sqlite版本,方法参考 https://blog.csdn.net/qq_39969226/article/details/92218635