代码编织梦想

在我这里,

我的django项目文件夹位于 /home/PROJECT_NAME

我安装好的nginx下的nginx.conf文件在 /etc/nginx/nginx.conf

1.关于nginx

nginx的作用是监听0.0.0.0:80,然后将请求转发给127.0.0.1:8000

首先安装nginx

pip3 install nginx

在项目文件夹下面新建conf文件 /home/PROJECT_NAME/django_nginx.conf

并在里面写入配置如下:

server {
    # 端口和域名
    listen 80;
    server_name 0.0.0.0;

    # 日志
    access_log /home/PROJECT_NAME/nginx_logs/nginx.access.log;
    error_log /home/PROJECT_NAME/nginx_logs/nginx.error.log;

    # static 和 media 的地址
    location /static {
        root /home/PROJECT_NAME;
    }
    # gunicorn 中生成的文件的地址
    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8000;
    }
}

注意文件 nginx_logs/nginx.access.log; 和 nginx_logs/nginx.error.log; 请在目录下手动创建,否则可能后面nginx启动会报错。

安装nginx并配置完django_nginx之后,进入nginx文件夹(每个服务器文件夹可能不一样)

cd /etc/nginx
ls

找到nginx.cong文件并打开

并在配置中http的括号中加入include如下并保存:

include /home/PROJECT_NAME/*.conf;

2.关于gunicorn

pip3 install gunicorn

安装好gunicorn之后,进入项目文件夹 /home/PROJECT_NAME,并且该文件夹下面建立文件gunicorn.conf.py,/home/PROJECT_NAME/gunicorn.conf.py,再改文件中加入配置如下:

# gunicorn.conf
# coding:utf-8
import multiprocessing
# 并行工作进程数, int,cpu数量*2+1 推荐进程数
workers = multiprocessing.cpu_count() * 2 + 1
# 指定每个进程开启的线程数
threads = 3
# 绑定的ip与端口
bind = '127.0.0.1:8000'
# 设置守护进程,将进程交给supervisor管理
daemon = 'false'
# 工作模式协程,默认的是sync模式
worker_class = 'gevent'
# 设置最大并发量(每个worker处理请求的工作线程数,正整数,默认为1)
worker_connections = 2000
# 最大客户端并发数量,默认情况下这个值为1000。此设置将影响gevent和eventlet工作模式
max_requests = 2000
# 设置进程文件目录
pidfile = '/home/PROJECT_NAME/gunicorn.pid'
# 设置访问日志和错误信息日志路径
accesslog = '/home/PROJECT_NAME/gunicorn_acess.log'
errorlog = '/home/PROJECT_NAME/gunicorn_error.log'
# 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
loglevel = 'info'
# 设置gunicorn访问日志格式,错误日志无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
# 监听队列
backlog = 512
#进程名
proc_name = 'gunicorn_process'
# 设置超时时间120s,默认为30s。按自己的需求进行设置timeout = 120
timeout = 120
# 超时重启
graceful_timeout = 300
# 在keep-alive连接上等待请求的秒数,默认情况下值为2。一般设定在1~5秒之间。
keepalive = 3
# HTTP请求行的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。
# 值是0~8190的数字。此参数可以防止任何DDOS攻击
limit_request_line = 5120
# 限制HTTP请求中请求头字段的数量。
#  此字段用于限制请求头字段的数量以防止DDOS攻击,与limit-request-field-size一起使用可以提高安全性。
# 默认情况下,这个值为100,这个值不能超过32768
limit_request_fields = 101
# 限制HTTP请求中请求头的大小,默认情况下这个值为8190。
# 值是一个整数或者0,当该值为0时,表示将对请求头大小不做限制
limit_request_field_size = 8190
# 设置gunicorn使用的python虚拟环境
pythonpath='/usr/bin/python3.10'
# 环境变量
raw_env = 'APE_API_ENV=PRO'

配置里面的pythonpath部分,请按照自己的python执行地址来配置。 

3.启动服务器

晚上以上的下载和配置之后,就是分别启动gunicorn和nginx的时候了。

首先进入  /home/PROJECT_NAME,在这个文件夹下输入命令

gunicorn -c gunicorn.conf.py .wsgi:application

看到terminal卡住那就是启动成功了,然后在启动nginx

nginx

然后去你的浏览器输入服务器公网ip,以及 http:://{服务器地址}/admin 试试吧!

gunicorn+nginx+django的配置是听简单的,最主要的是弄清楚nginx和gunicorn分别监听什么ip和什么端口,整个流程是nginx获取请求并转发给gunicorn,gunicorn启动wsgi来运行django线程。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_25960599/article/details/131026663