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 = trueView Code