指南
场景
配置 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 等命令