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

Centos环境中Django项目中gunicorn的配置和使用

一、安装
pip3 install gunicorn

测试
python3 -m gunicorn --config gunicorn.conf.py 项目名.wsgi:application

查找 gunicorn 可执行文件路径
如果仍然想用 gunicorn 命令,可以找到它的安装位置:


find / -name gunicorn 2>/dev/null

检查环境变量:
echo $PATH

修改环境变量:
查看
[root@192 ~]#  cat ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
source /opt/rh/devtoolset-9/enable
#This is  gcc version
source /opt/rh/devtoolset-9/enable #This is  gcc version
export PATH=$path:/usr/local/python3/bin #新增的,添加gunicorn的目录位置
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin #这个也很重要,检查有没有存在

生效命令
source ~/.bashrc

测试:
gunicorn --config gunicorn.conf.py myproject.wsgi:application
--------------------------------------------------------------

二、创建配置文件

在项目的根目录下创建配置文件 

vim  gktb/gunicorn.conf.py
内容:
# gunicorn.conf.py
import multiprocessing

# 服务器socket
bind = "127.0.0.1:8000"
backlog = 2048

# 工作进程 (Python 3.11优化)
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "sync"  # Python 3.11的同步性能已经很好
worker_connections = 1000
timeout = 30
keepalive = 2

# Python 3.11性能优化
worker_tmp_dir = "/dev/shm"  # 使用内存文件系统
# 重启
max_requests = 1000
max_requests_jitter = 100
preload_app = True

# 日志
accesslog = "/root/projects/gktb/logs/gunicorn_access.log"
errorlog = "/root/projects/gktb/logs/gunicorn_error.log"
loglevel = "info"

# 进程命名
proc_name = 'gktb_gunicorn'


# 用户权限
user = "root"
group = "root"


--------------------------------

三、创建服务:

目的:使用系统服务自动启动项目


vim /etc/systemd/system/gktb.service

内容:
[Unit]
Description=GKTB Django Application
After=network.target mysql.service

[Service]
WorkingDirectory=/root/projects/gktb 
ExecStart=/usr/local/python3/bin/gunicorn --config gunicorn.conf.py gktb.wsgi:application
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target


重新加载 Systemd:
sudo systemctl daemon-reload

sudo systemctl enable gktb
sudo systemctl restart gktb

-----------------------

部署nginx做跳转
安装nginx
yum install -y nginx

添加配置文件:
vim /etc/nginx/conf.d/gktb.conf


server {
listen 80;
server_name your-domain.com your-server-ip;

    # 安全头
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;

    # 静态文件
location /static/ {
alias /root/projects/gktb/app01/static/;
expires 30d;
add_header Cache-Control "public, immutable";
}

    # 媒体文件
location /media/ {
alias /root/projects/gktb/app01/static/media/;
expires 7d;
}

    # Django应用
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

        # 超时设置
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}

    # 文件上传大小限制
client_max_body_size 10M;

    # 日志
access_log /var/log/nginx/gktb_access.log;
error_log /var/log/nginx/gktb_error.log;
}

最后修改/etc/nginx/nginx.conf中的user root,权限问题

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

相关文章:

  • LangGraph系列:多智能体终极方案,ReAct+MCP工业级供应链系统
  • 移动端 HTTPS 抓包实战,多工具组合分析与高效排查指南
  • 自动化测试工具Parasoft C/C++test如何导入IAR项目
  • 蓝桥杯嵌入式赛道—-软件篇(GPIO输出模式配置)
  • 仿第四城地方门户网站模板python可以做网站吗
  • ToDesk如何充当分屏显示器?扩展屏、多屏结合虚拟屏都可行!
  • qKnow 知识平台开源版 v1.0.3 发布:Docker Compose 部署 多项稳定性优化和关键问题修复
  • 【Prompt学习技能树地图】检索增强生成(RAG)核心技术剖析与实践指南
  • Zookeeper在Kafka中的作用
  • MySQL数据表操作
  • 访问外国网站速度慢怎样优化标题关键词
  • 《VScode搭建教程(附安装包)--- 开启你的编程之旅》
  • MFC Edit Control控件完全指南:从基础使用到高级定制
  • C语言编译器安装教程 | 快速上手C语言编译环境的配置与调试
  • C库OpenSSL安装与VisualStudio配置
  • ppt模板免费下载网站不需要登录网页设计的三大基本技术
  • 什么是营销型网站?h5可以连接别的网站吗
  • Android13修改系统支持gps同步时间
  • Webpack到Vite:构建工具迁移实战经验总结
  • QT音乐播放器18----新歌速递播放、隐藏顶部和底部工具栏、自定义ToolTips
  • 工控一体机在超声波清洗机中的应用
  • Qt5配置MSVC2017
  • 【AI】基于YOLO11-SEG的PCB缺陷检测与分类系统实现_3
  • 2. Qt深入 线程
  • [Godot] C#基于噪声的简单TileMap地图生成
  • Linux(4)—— 基础开发工具
  • 广州好的网站设计公司如何建单位网站
  • 无损改造+智能防控,安科瑞ASCB3为古建筑与历史街区量身打造安全用电解决方案
  • 解决“Move to iOS 卡在准备中”的 9 种有效方法
  • iOS IPA 上传工具全面解析,从 Transporter 到开心上架(Appuploader)命令行的高效上架实践