Django 项目部署

发布于 2023-07-28 19:20:01 字数 1643 浏览 87 评论 0

在生产环境部署 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'
    }
  }]
};

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

我三岁

暂无简介

文章
评论
28 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文