Gunicorn部署项目
Django
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;
}
}