Javascript is required
Gunicorn部署项目

gunicorn + python

安装

pip3 install gunicorn

项目配置settings.py对应的应用

INSTALLED_APPS = [
    ...
    'gunicorn',
    ...
]

然后项目根目录编写gunicorn的配置文件:gunicorn.conf.py

import multiprocessing

bind = "0.0.0.0:8000"   #绑定的ip与端口
workers = 1                #进程数

静态资源

如果静态资源找不到添加路由。

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 
urlpatterns = [
    ...
    ...
]
urlpatterns += staticfiles_urlpatterns()

启动

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

格式

gunicorn 项目.wsgi:application -c 配置文件路径

其他参数

-c Config --config

# 以守护进程方式运行Gunicorn进程
-D --daemon
# 切换指定工作目录
--chdir CHDIR

# 工作进程的数量,在Gunicorn启动的时候,在主进程中预先fork出指定数量的worker进程处理请求
# -w INT, --workers INT

# worker重启前处理的最大请求数
# --max-requests INT

# worker空闲的超时时间,空闲超时将重启(默认30秒)
# -t INT, --timeout INT

# 指定访问日志文件
# --access-logfile FILE

# 指定error log的错误级别
# --log-level LEVEL

# 指定错误日志文件
# --error-logfile FILE, --log-file FILE

--bind
--workers
--timeout
--daemon
--access-logfile
--error-logfile

如果Docker启动项目

Dockerfile

FROM python:3.7
WORKDIR /Project/mapp

COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

COPY . .
ENV LANG C.UTF-8

CMD ["gunicorn", "mydjango.wsgi:application","-c","./gunicorn.conf.py"]

配置Nginx

通常Gunicorn会部署在Nginx后面,Nginx会直接解析静态请求,并将动态请求转发给Gunicorn去解析。

server {
    listen       80;
    server_name  xxx.com;

    access_log   /data/logs/nginx/boluomi_access.log  main;
    error_log    /data/logs/nginx/boluomi_error.log;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /static {
        alias /Project/mapp/static;
    }
}