Gunicorn部署Django
一. 简介
最近用Django写了几个接口,并且部署到了服务器上,记录下过程。
二. Django
Django是一个开放源代码的Web应用框架,由Python写成。是Python Web框架重量级选手中最有代表性的一位,许多成功的网站都基于它。
最新发布的版本号为2.0,需要Python最低版本为3.5+,所以这里我们需要安装python34。
三. Gunicorn
Django自带的WSGI server性能不好,真正生产上部署时我们需要使用Gunicorn,它有很多优点:配置简单、部署方便、轻量级的资源消耗,以及相当迅速。
Instagram也使用它。
Gunicorn是基于”pre-fork worker”模型,这就意味着有一个中心主控master进程,由它来管理一组worker进程。而默认的sync worker有一些问题,这里我们使用异步的worker gevent代替它,且worker数量为(2 x $num_cores) + 1
。具体的可以参考http://gunicorn-docs.readthedocs.io/en/latest/design.html。
由于使用了Gunicorn,相应的我们需要在Django项目的settings.py中的INSTALLED_APPS加入:gunicorn。
四. virtualenv
virtualenv是一个创建隔绝的Python环境的工具,我们可以使用它创建不同Python版本的环境,使用起来很简单。
这里创建的是Python3环境-django。
创建好后我们可以执行 workon django
进入该环境,执行deactivate
退出该环境。
五. 安装
install_django.sh
# yum
yum -y install epel-release
yum -y install python-devel python34 python34-devel
yum -y install python-virtualenv python-setuptools
yum -y install libevent libevent-devel
yum -y install mysql-devel gcc gcc-devel
easy_install pip
pip install --upgrade pip
# virtualenv
pip install virtualenvwrapper
source /usr/bin/virtualenvwrapper.sh
mkvirtualenv -p python3 django
workon django
# django
pip install django
# gunicorn
pip install gunicorn
pip install gunicorn[gevent]
pip install greenlet
pip install gevent
# 其他
pip install mysqlclient
pip install djangorestframework
pip install django-simple-serializer
deactivate
# /etc/bashrc
echo 'source /usr/bin/virtualenvwrapper.sh' >> /etc/bashrc
source /etc/bashrc
六. 配置
gunicorn.conf
import os
bind = '0.0.0.0:8000'
workers = 3
backlog = 2048
worker_class = 'gevent'
debug = True
proc_name = 'gunicorn.proc'
pidfile = '/var/run/gunicorn.pid'
logfile = '/var/log/gunicorn/debug.log'
loglevel = 'debug'
七. 命令
项目名称:testProject
启动
cd 工程目录
/root/.virtualenvs/django/bin/gunicorn -c /usr/local/etc/django/gunicorn.conf --reload testProject.wsgi:application
可以正常启动,执行下面命令,以daemon方式后台运行
/root/.virtualenvs/django/bin/gunicorn -c /usr/local/etc/django/gunicorn.conf --reload testProject.wsgi:application -D
八. 结尾
刚接触Django,感觉用它来写个东西很方便,以后有时间多学习学习。
参考: