Gunicorn+django部署
部署前提是服务器中要有项目中所需的其他服务,例:mysql数据库,nginx,python解释器等,在其他环境搭好的情况下使用此方式可简单部署一个django项目。
至于安装上面提到的这些,有兴趣可点击前往博客查看或CSDN博客查看
1、准备工作
- 创建干净的虚拟环境
- 执行下载命令下载所需依赖包
- 测试数据库链接
- 测试项目运行
- (其中详细步骤上面博客链接中有,这里不赘述了)
2、下载Gunicorn
# workon进入项目的虚拟环境中下载
# pip install gunicorn
4、修改配置文件
# 修改settings.py文件的:INSTALLED_APPS
INSTALLED_APPS = [...'gunicorn', # 把gunicorn添加到apps中
]
5、使用Gunicorn命令运行django项目
# 在manage.py 同级目录下执行命令,注:book是项目名
gunicorn book.wsgi -b 127.0.0.1:8000
基本参数列表:
-c 指定一个配置文件(py文件)
-b 与指定的socket进行绑定
-D 以守护进程形式来运行Gunicorn进程
-w 工作的进程数量,后面加数字;[gunicorn -w 2 untitled.wsgi -b 0.0.0.0:8000]
–threads 后面加数字,处理请求的最大线程数
-k 工作进程类型: sync(默认), eventlet, gevent, or tornado, gthread, gaiohttp.
–chdir 后面加路径,跳转到目录下执行
–reload 后面可加参数,默认参数false,开启为true,开启时当代码发生改变,会重新加载修改的代码,并启动程序,(热加载)
-proxy-protocol
–worker-connections
–access-logfile
6、测试运行
# 执行命令curl后查看返回状态,这里未开启守护进程,加载需要再开一个终端执行命令
curl 127.0.0.1:8000
7、运行可能报错
# 如果使用参数 -k gevent 有可能报错,错误大致信息就是缺少gevent或者gevent版本低,pip下载一下就好,或者更换版本
# 同理使用其它 -k 参数也是如此
8、配置脚本文件启动django项目
在manage.py同级目录创建配置文件gunicorn.conf.py
# gunicorn_config.py
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessingbind = '127.0.0.1:8000' # 绑定ip和端口号
# chdir = '/opt/workspace/bookstore' # 目录切换
# backlog = 500 # 监听队列
timeout = 60 # 超时
worker_class = 'gevent' # 使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = multiprocessing.cpu_count() * 2 + 1 # 进程数
threads = 2 # 指定每个进程开启的线程数
loglevel = 'info' # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
accesslog = "/opt/workspace/bookstore/log/gunicorn_access.log" # 访问日志文件
errorlog = "/opt/workspace/bookstore/log/gunicorn_error.log" # 错误日志文件
9、运行命令
# gunicorn.conf.py 是配置文件
# bookstore 是项目名
# gunicorn -c gunicorn.conf.py bookstore.wsgi:application
10、nginx简单部署示例
找到nginx配置文件打开添加站点
http {include mime.types;default_type application/octet-stream;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;server {listen 80;server_name www.flag.space, 109.39.89.199;location / {proxy_pass http://127.0.0.1:8000;#root html;#index index.html index.htm;}location /static {alias /opt/workspace/bookstore/static;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}
其中的 location / 中配置项目的url地址
location /static 中配置静态文件路径
Gunicorn+django部署相关推荐
- Django 部署基础【使用 Nginx + uWSGI 的方式来部署来 Django】
本文主要讲解在 Linux 平台下,使用 Nginx + uWSGI 的方式来部署来 Django,这是目前比较主流的方式.当然你也可以使用 Gunicorn 代替 uWSGI,不过原理都是类似的,弄 ...
- nginx+uWSGI + django部署项目
项目部署 nginx+uWSGI + django 1. WSGI WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器(返回静态资源的就是web服务器,Nginx)如何与Web应用程序( ...
- django 部署_狂野的Django:部署生存的技巧
django 部署 by Ali Alavi 通过Ali Alavi 狂野的Django:部署生存的技巧 (Django in the wild: tips for deployment surviv ...
- python之Django部署
Django部署: 1. 租云服务器 2. 买服务器 租:公网IP,111.13.101.208 租域名:www.pythonav.com <-> 111.13.101.208 3. 编写 ...
- nginx uwsgi django部署
虽然网上有很多这方面部署材料,但很多材料内容并不完善.即便搜索网上大量的部署材料,还是花了我好几天的时间才搞出来.部署步骤太复杂了,尤其uwsgi,感觉是反人类的设计. 言归正传,我的部署版本分别如下 ...
- Uwsgi+Nginx+Django部署
Django+Uwsgi+Nginx部署 这几天一直在捣腾Django部署,一只菜鸡的上山路 如果什么不对,还请多多指教. 参考:如何使用Django与uWSGI,Uwsgi文档 Linux使用的是u ...
- CentOS6.5下Gunicorn+Django+nginx部署的过程
2019独角兽企业重金招聘Python工程师标准>>> 本文假设你已经在CentOS下使用Python manage.py runserver 0.0.0.0:8080,能够顺利跑起 ...
- django+nginx+gunicorn+supervisord部署配置
一.背景介绍 后端服务是Django框架编写的,需要使用Gunicorn进行服务托管,使用supervisord进行保持活跃,最后通过Nginx向外提供服务 二.nginx+gunicorn 安装和配 ...
- nginx + gunicorn + django的简单部署
sudo apt-get install nginxcd /etc/nginx/sites-availablesudo vim default 原本是想安装Image包,但是百度的方法都乱七八糟的不能 ...
最新文章
- 将查询后的数据导入到其他表中
- 第十届 蓝桥杯样题 —— 信用卡号验证
- 数据结构学习官方代码
- ui设计基础_我不知道的UI设计的9个重要基础
- Java两种设计模式_23种设计模式(11)java策略模式
- bzoj2425 [HAOI2010]计数 组合数
- python导入自己写的py_卧槽,神操作!一句查询让Python帮忙自己写程序
- PHPStorm IDE 快捷键(MAC)
- 南非世界杯火热角逐 金山网盾开启搜索保护
- python从入门到放弃表情图-Python 从入门到放弃(一)
- cocos lua 溶解_Cocos2d-x的lua官方加密的解密方法
- 计算机total函数,以一敌十的SUBTOTAL函数,你不会用就太可惜了!
- wifi大师小程序独立版3.0.8源码
- gateway跨域问题解决方法
- 消极和积极的道德--给亲爱的安德烈
- 测试手机是否降频软件,如何检测自己的iPhone是否被苹果降频 降频的处理方法有哪些...
- 时间序列进行分析的一些手法以及代码实现(移动平均、指数平滑、SARIMA模型、时间序列的(非)线性模型)
- jpg转bmp(使用libjpeg库)
- 1647:迷路(矩阵快速幂+矩阵点的拆分)
- 二叉树的遍历——层序遍历