跳到主要内容
版本:1.0

指南

场景

配置 uWsgi

uWsgi 可以作为 Python 应用程序服务器,结合 Nginx 部署网站。

  1. 隔离环境中安装 uWsgi

    cd /data/wwwroot/mydjango && source bin/activate
    pip install uwsgi

    uWsgi 不能安装到全局环境中,否则无法管理隔离环境中的 Django 框架

  2. /data/wwwroot/mydjango 目录中新增一个 uWsgi 配置文件,命名为:django.ini

    [uwsgi]
    master = true
    protocol = uwsgi
    http = 0.0.0.0:8001
    wsgi-file = mysite1/mysite1/wsgi.py
    chdir = /data/wwwroot/mydjango
    buffer-size = 8192
    enable-threads= true
    close-on-exec = true
    uid = nginx
    gid = nginx
  3. 通过隔离环境中的 uWsgi 命令启动应用

    /data/wwwroot/mydjango/bin/uwsgi --ini /data/wwwroot/mydjango/django.ini
  4. 本地浏览器访问:http://服务器公网IP:8001 便可以访问 Django 界面

  5. Nginx 配置 proxy 转发

架构逻辑:客户-uWsgi-Django。同时,配置过程中把握好 django.ini 中的路径不要出错。

Python 版本变更

框架

Django

我们知道 python manage.py runserver 0.0.0.0:8001 可以访问 Django,但由于 runserver 只是 Django 框架中用于测试的 Web 服务器,在生产应用中需慎用。

真正的 Django 生产应用如下图所示的架构:

Python 生产环境架构

Python 生产环境架构

Python 生产环境架构

故障排除

执行 django 启动命令报错?

错误信息:You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.

解决方案:运行下面的命令后再启动项目

python manage.py migrate

pip install uwgsi 报错?

错误信息如下:

ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-v02o0o80/uwsgi_6afc0c5595704f599e64e6aa41047052/setup.py'"'"'; __file__='"'"'/tmp/pip-install-v02o0o80/uwsgi_6afc0c5595704f599e64e6aa41047052/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-oovzq0ap/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.6m/uwsgi

错误原因:
解决方案:

参数

路径

Python

除了 Python3 之外,预装包中还安装了 Virtualenv, pip 等常用的 Python 工具。

Python 应用目录: /data/wwwroot
Python 框架目录: /data/apps
Python 源码目录: /usr/lib/python
Python 日志目录: /data/logs/python

操作系统一般默认自带 Python2,部分操作系统默认也安装了 Python3

Django

Django 安装目录: /data/wwwroot/django
Django systemctl 名称: django.service

版本号

下面的命令用于查看 Python 相关的版本号

# Python version
python3 -V
python -V

# Django version
/data/wwwroot/django/bin/pip show django

服务

Django 服务的管理方式如下:

systemctl start django
systemctl stop django
systemctl restart django
systemctl status django

命令行

主要包括 pip, django-admin, python 等命令