gunicorn 安装
pip install gunicorn
- gunicorn 指定服务器后台运行
gunicorn 项目名.wsgi -b 0.0.0.0:9999
- 查看正在运行的进程
netstat -tpl
- 进入我自己的django项目中配置(创建)一个gunicorn.conf.py 的配置文件
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing
bind = "127.0.0.1:8080" #绑定的ip与端口
backlog = 512 #监听队列数量,64-2048
chdir = '/root/sites/DjangoBlog' #gunicorn要切换到的目的工作目录**
worker_class = 'sync' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = multiprocessing.cpu_count()
#workers = 4 # multiprocessing.cpu_count() #进程数
threads = 16 #multiprocessing.cpu_count()*4 #指定每个进程开启的线程数
loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
accesslog = "/root/sites/DjangoBlog/log/gunicorn_access.log" #访问日志文件 **
errorlog = "/root/sites/DjangoBlog/log/gunicorn_error.log" #错误日志文件 **
# accesslog = "-" #访问日志文件,"-" 表示标准输出
# errorlog = "-" #错误日志文件,"-" 表示标准输出
proc_name = 'fof_api' #进程名
- 后台运行服务
旧版本命令
gunicorn python:gunicorn.conf.py
新版本 (-c 表示指定的文件 , -D 表示后台运行)
gunicorn -c gunciorn.conf.py 项目名称.wsgi -D
nginx
不同的nginx版本配置不同
源码安装会在/usr/local/ 下 , yum 安装会自动分配目录
- nginx的配置文件: 我们也可以单独再创建一个文件下的conf, 在Nginx本身的conf文件中吧serve剪切到 新创建的里面,在本身自带的conf文件中include路径指定新创的conf (*.conf) 在新创建的conf中添加
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
charset utf-8;
# root /usr/share/nginx/html;
root /root/message/_book;
# Load configuration files for the default server block.
access_log /var/log/nginx/build-access.log;
error_log /var/log/nginx/build-err.log;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
#静态文件如js,css的存放目录
alias /root/Code/django-log/DjangoBlog-master/sites-data/;
}
location / {
proxy_pass http://0.0.0.0:8080; # 这里要配合启动文件使用
proxy_redirect off;
proxy_set_header Host $http_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;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
- 重新启动Nginx服务
systemctl restart nginx.service
- 杀死gunicorn进程
killall gunicorn
- 现在修改gunicorn.conf.py 绑定的端口,因为风险大
- 再次启动gunicorn
gunicorn -c gunicorn.conf.py 项目名称.wsgi -D
Django
- 打开manage.py文件有一个收集静态资源的文件
python manage.py collectstatic (收集所有的静态资源到某个文件下(该文件在settings里有指定【STATIC_ROOT = os.path.join(SITE_ROOT, 'sites-data')
】))
- 接着在nginx 新创的conf中指定静态资源收集的路径 然后重新加载nginx配置文件
指定: alias /root/Code/django-log/DjangoBlog-master/sites-data/;
重新加载: systemctl reload 然后页面也就会跟指定的路径进行映射,出现效果
nginx + gunicorn 部署Django博客访问速度比较快
- nginx负责静态资源 gunicorn负责动态资源