当前位置: 首页 > news >正文

使用 Gunicorn 部署 Django 项目

准备工作. 安装 Gunicorn

pip install gunicorn

1. 使用配置文件

创建 gunicorn_conf.py 文件:

import multiprocessingbind = "127.0.0.0:8001"
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "gthread"
threads = 4
max_requests = 1000
timeout = 30
keepalive = 2
accesslog = "/var/log/gunicorn/access.log"
errorlog = "/var/log/gunicorn/error.log"

然后运行:这是手动测试

gunicorn -c gunicorn_conf.py zhiliaoblog.wsgi:application

2. 结合 Nginx

Nginx 配置示例:

nginx

upstream django_app {server 127.0.0.1:8001;
}server {listen 80;server_name blog.larance.xyz;location / {proxy_pass http://django_app;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;proxy_redirect off;}location /static/ {alias /home/ubuntu/zhiliaoblog/static/;}location /media/ {alias /home/ubuntu/zhiliaoblog/media/;}
}

3. 创建 Supervisor 配置文件

/etc/supervisor/conf.d/zhiliaoblog.conf

[program:zhiliaoblog]
command=/home/ubuntu/zhiliaoblog/blog_env/bin/gunicorn -c /home/ubuntu/zhiliaoblog/gunicorn_conf.py zhiliaoblog.wsgi:application
directory=/home/ubuntu/zhiliaoblog
user=ubuntu
autostart=true
autorestart=true
startsecs=5
startretries=3
redirect_stderr=true
stdout_logfile=/var/log/supervisor/zhiliaoblog.log
environment=DJANGO_SETTINGS_MODULE="zhiliaoblog.settings",PATH="/home/ubuntu/zhiliaoblog/blog_env/bin:%(ENV_PATH)s",PYTHONPATH="/home/ubuntu/zhiliaoblog"

启用并启动服务:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start zhiliaoblog

http://www.dtcms.com/a/287524.html

相关文章:

  • XSS相关理解
  • Ubuntu20.04 samba配置
  • 针对大规模语言模型的上下文工程技术调研与总结(翻译并摘要)
  • 考研复习-数据结构-第七章-查找
  • 论文略读:Are Large Language Models In-Context Graph Learners?
  • 编程实现Word自动排版:从理论到实践的全面指南
  • 【Linux服务器】-zabbix通过proxy进行分级监控
  • Vue3生命周期函数
  • 多进程服务器
  • 【愚公系列】《MIoT.VC》001-认识、安装 MIoT.VC 软件
  • 安装postgresql
  • 深度学习Depth Anything V2神经网络实现单目深度估计系统源码
  • OpenCV 官翻8 - 其他算法
  • warning: _close is not implemented and will always fail
  • 驾驭 Spring Boot 事件机制:8 个内置事件 + 自定义扩展实战
  • Custom SRP - Custom Render Pipeline
  • SurfaceView、TextureView、SurfaceTexture 和 GLSurfaceView
  • 立创EDA中双层PCB叠层分析
  • 原码、反码和补码在计算机中的运算规则有何不同?
  • 医疗AI与融合数据库的整合:挑战、架构与未来展望(上)
  • 小谈相机的学习过程
  • 软考 系统架构设计师系列知识点之杂项集萃(112)
  • jvm-sandbox-repeater 录制和回放
  • 基于深度学习的微表情识别算法研究
  • 智慧园区工程监控与工单管理系统需求文档
  • Go语言里的map
  • RocketMQ源码级实现原理-NameServer路由机制
  • 解锁C++性能密码:TCMalloc深度剖析
  • 低代码平台ToolJet实战总结
  • Java学习--------消息队列的重复消费、消失与顺序性的深度解析​