指南
场景
配置 uWsgi
uWsgi 可以作为 Python 应用程序服务器,结合 Nginx 部署网站。
- 
隔离环境中安装 uWsgi cd /data/wwwroot/mydjango && source bin/activate
 pip install uwsgiuWsgi 不能安装到全局环境中,否则无法管理隔离环境中的 Django 框架 
- 
在 /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
- 
通过隔离环境中的 uWsgi 命令启动应用 /data/wwwroot/mydjango/bin/uwsgi --ini /data/wwwroot/mydjango/django.ini
- 
本地浏览器访问:http://服务器公网IP:8001 便可以访问 Django 界面 
- 
Nginx 配置 proxy 转发 
架构逻辑:客户-uWsgi-Django。同时,配置过程中把握好 django.ini 中的路径不要出错。
Python 版本变更
框架
Django
我们知道 python manage.py runserver 0.0.0.0:8001 可以访问 Django,但由于 runserver 只是 Django 框架中用于测试的 Web 服务器,在生产应用中需慎用。
真正的 Django 生产应用如下图所示的架构:



故障排除
执行 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 等命令