Django uwsgi Nginx 的生产环境部署

配置生产环境

#settings.py 文件中
DEBUG = False # 生产环境
# 允许访问的域名,域名前加一个点表示允许访问该域名下的子域名,比如 www.zmrenwu.com、
# test.zmrenwu.com 等二级域名同样允许访问。如果不加前面的点则只允许访问 zmrenwu.com
ALLOWED_HOSTS = ["127.0.0.1",".blogzjl.site"]

创建Python虚拟环境

安装 virtualenv

sudo pip3 install virtualenv

克隆Python的环境

#先到指定目录下运行, 我的虚拟环境是在 blogzjl.site 目录下
#指定--python=python3 克隆Python3的环境
virtualenv --python=python3 env

#进入虚拟环境
source /home/zjl/sites/blogzjl.site/env/bin/activate
#用户名前,会出现 (env) zjl@ ,表示进入
#后面基本上都是在虚拟环境中完成的

收集静态文件

先在settings中配置 STATIC_ROOT = os.path.join(BASE_DIR, 'static')

同时在mysite_nginx.conf 中将静态文件的路径改为 static 的绝对路径

#在settings.py中配置

# STATIC_ROOT 指明了静态文件的收集目录,即项目根目录(BASE_DIR)下的 static 文件夹
STATIC_ROOT = os.path.join(BASE_DIR, 'static')


#在命令行输入
python3 manage.py collectstatic #将静态文件copy到统一的目录static下

uwsgi配置

安装 uwsgi

pip3 install uwsgi

#可能需要更新pip才能安装,根据提示输入命令更新
pip install --upgrade pip

测试 uwsgi

在项目目录下执行

uwsgi --http 127.0.0.1:8080 --file BlogProject/wsgi.py --static-map=/static=static
#--http 这个就和runserver一样指定IP 端口
#--file Django 项目中wsgi.py文件的路径,和setting.py在同一个目录下
#-- static 做一个映射,指定静态文件

#可能会启动/访问失败,请检查端口是否占用,file 或 static 路径是否正确
#使用命令 netstat -nultp 查看端口使用情况
#关掉相关经常 killall -9 uwsgi 或 kill -9 进程号

执行Linux命令 curl http://127.0.0.1:8080 访问,查看是否是访问成功后的页面(可以启动DEBUG 对错误页面的相关调试)

配置文件

相当于将 uwsgi --http 127.0.0.1:8080 --file BlogProject/wsgi.py --static-map=/static=static 这一长串命令配置到文件里,简化以后的启动命令

在自定义目录或项目主目录下创建uwsgi配置文件:blogzjl_uwsgi.ini(自定义命名,以 .ini 结束),我这里是在/home/zjl/sites/blogzjl.site/blogzjl/

路径下自定义的一个目录 script 存放所有配置(包括nginx)相关的文件

[uwsgi]
#the local unix socket file than commnuincate to Nginx

socket = /home/zjl/sites/blogzjl.site/blogzjl/script/uwsgi.sock

# 项目路径
chdir = /home/zjl/sites/blogzjl.site/blogzjl/BlogProject/

# Django's wsgi file 项目中wsgi的位置
wsgi-file = BlogProject/wsgi.py


#进程相关设置
# 进程数 同 processes
worker = 5
#processes = 4
#线程数
#threads = 2

#指定静态文件
static-map = /static=/home/zjl/sites/blogzjl.site/blogzjl/BlogProject/static

#主进程启动
master = true

pidfile = /home/zjl/sites/blogzjl.site/blogzjl/script/uwsgi.pid

#static-map = /static = /home/zjl/sites/blogzjl.site/blogzjl/BlogProject/static

#启动uwsgi的用户名和用户组
uid = zjl
gid = zjl

#启用线程
enable-threads = True
#设置自中断时间
harakir = 30

#设置缓冲
post-buffering = 4096

#设置后台运行
daemonize = /home/zjl/sites/blogzjl.site/blogzjl/script/uwsgi.log

#monitor uwsgi status
#stats = 127.0.0.1:9191
# clear environment on exit 退出时清除环境
vacuum          = true
View Code