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,权限问题

相关推荐
FYKJ_201011 小时前
SpringSecurity教室智能预约系统73972-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·spring·django
FYKJ_201012 小时前
springboot游泳馆管理系统79222-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
言乐61 天前
Python基于关键词分拣快递(适用于电商与货运代理等)
开发语言·python·django·virtualenv·pygame
Percy_kk1 天前
Django的CRUD映射
后端·django
专业程序开发源1 天前
springboot全民健身和饮食健康管理系统29158-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
ss2731 天前
AI全栈实战 | 3.3-01 Python OOP:__init__ 真的是构造函数吗,元类怎么让 Django Model 变魔法
开发语言·python·django
FYKJ_20101 天前
springboot心理健康管理系统86254-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
专业程序开发源2 天前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
星光开发者2 天前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
专业程序开发源2 天前
django新闻推荐系统70655-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·django·课程设计