暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Django 项目部署

程序猿研究所 2021-07-06
1913

在生产环境部署 django 项目,比较方便的是用 Gunicorn 或者 Waitress 当作 WSGI 服务器启动 django, 然后使用 nginx 做反向代理,Gunicorn 只支持类 Unix 系统, Waitress 同时支持 Windows, 两者都可用于生产环境,稳定性都是不错的。还有一种比较热门且常用的是使用 uWSGI 结合 Nginx 部署,这种不如上面简单方便,所以不推荐。

Waitress 部署 django 配置文件 server.py

    from waitress import serve
    from poetryadmin.wsgi import application


    serve(application, listen='*:8060')

    将文件放在 django 项目目录下,执行:python server.py
    即可。

    django 启动之后是没有样式的,因为 django 需要用 nginx 去 serve 静态文件,静态文件提取:

      python manage.py collectstatic

      可以将提取的静态文件放到 CDN,来加速访问,这里为了方便,将静态文件提取到项目目录下,并用 Nginx 托管。

      最简单的 nginx 配置静态文件和代理部署配置:

        upstream poetryadmin {
        server 127.0.0.1:8060;
        }


        server {
        server_name admin.example.com;
        proxy_set_header Host $host;
        proxy_http_version 1.1;


        location static {
        root var/www/html/poetryadmin;

        sendfile on;
        tcp_nopush on;
        }


        location / {
        proxy_pass http://poetryadmin;
        }
        }

        为了项目的可用性,我们需要让 django 项目出错的时候自动重启,我们可以使用 pm2
        来管理 django 服务,
        安装 pm2

          npm i -g pm2

          在项目中初始化 pm2 的配置文件:

            pm2 init

            编辑配置文件 ecosystem.config.js
            :

              module.exports = {
              apps : [{
              name: 'poetrycms',
              interpreter: '/User/home/miniconda3/envs/poetrycms/bin/python',
              script: 'server.py',
              watch: false,
              env: {
              'APP_ENV': 'prod'
              }
              }, {
              script: './server.py',
              }]
              };

              interpreter
              参数是执行 python 的解释器路径,因为一般都会新建个 python 的虚拟环境,不会使用系统内置的 python 解释器运行,可以使用 which python
              来查看路径。

              文章转载自程序猿研究所,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论