django应用的部署

这里分享下对django应用的部署方式,采用 django + gunicorn + nginx 部署应用。html

1.应用清单python

python2.7mysql

Django-1.8.7nginx

gunicorn-19.4.5sql

nginx数据库

2.提早的准备django

因为如今大多数服务器都是centos6的操做系统,系统自带的python版本为2.6,而Django1.8须要python2.7版本以上,因此要对python作升级。另外django和gunicorn用下载后的安装包安装的话,须要提早安装一些包,不一样的环境可能会不同,如下能够作参考。我这里的这个环境没法连互联网,因此安装包等都是下载下来,拷贝进来的。推荐用virtualenv来安装环境,这样作最好了。centos

zlib-1.2.3-29.el6.x86_64 ##不然影响django安装浏览器

zlib-devel-1.2.3-29.el6.x86_64 ##不然影响django安装服务器

python-setuptools-0.6.10-3.el6.noarch ##不然影响django安装

mysql-devel-5.1.73-5.el6_6.x86_64 ##若是django使用mysql的须要安装不然django导入不了MysqlDB 模块

mysql-libs-5.1.73-5.el6_6.x86_64 ##若是django使用mysql的须要安装不然django导入不了MysqlDB 模块

python-backports-1.0-5.el6.x86_64 ##安装gunicorn须要不然gunicorn导入不了_ssl 模块

python-backports-ssl_match_hostname-3.4.0.2-2.el6.noarch ##安装gunicorn须要不然gunicorn导入不了_ssl 模块

准备好后,将django 和 gunicorn 解包后 python setup.py install 安装便可

nginx 能够从官方网站 http://nginx.org/packages/centos/6/x86_64/RPMS/ 下载rpm包安装

将应用经过SVN或GIT更新,而且修改好setting.py配置文件中的信息,譬如调整数据库的位置。

而后验证下django项目 python manage.py runserver 0.0.0.0:8000 启动看看,没问题就关闭。

3.配置静态页面

在开发过程当中静态页面是配置在django服务中static目录下的,然而在部署生产环境时并不须要由django来作这种工做,由nginx来完成更好

在django中能够在setting.py中的STATIC_ROOT定义静态文件存放的位置,而STATIC_URL配置不用变.

故在setting.py中设置

STATIC_ROOT = os.path.abspath(os.path.join(BASE_DIR,'../static')) 即在上级目录static中存放django中定义的静态文件

执行命令 python manage.py collectstatic 就把静态文件都部署到指定STATIC_ROOT下了

!!!注意static目录与其上级目录要有可读权限,由于在后面的nginx配置须要,否则html页面中会引用不到静态文件报403 forbidden。

4.启动gunicorn

cd 到django项目主目录 dj是主目录 wsgi是其中wsgi.py文件 application为其中函数 -b参数后跟监听IP地址和端口

执行命令 nohup /usr/local/python2.7/bin/gunicorn -b0.0.0.0:8999 dj.wsgi:application &

[2016-02-24 14:58:57 +0000] [20088] [INFO] Starting gunicorn 19.4.5

[2016-02-24 14:58:57 +0000] [20088] [INFO] Listening at: http://0.0.0.0:8999 (20088)

[2016-02-24 14:58:57 +0000] [20088] [INFO] Using worker: sync

[2016-02-24 14:58:57 +0000] [20093] [INFO] Booting worker with pid: 20093

5.配置nginx

配置nginx文件

cd /etc/nginx/conf.d

cp default.conf default.conf.bak

vi dj.conf


#这里/home/app/static 就是前面STATIC_ROOT指向的静态文件存放的地址

server {

listen 80;

location /static {

alias /home/app/static;

}

location / {

#这里建议用127.0.0.1替代localhost 否则nginx可能会报connect() failed (111: Connection refused) while connecting to upstream ……[::1] 错

proxy_pass http://127.0.0.1:8999;

}

}

service nginx configtest

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

service nginx start


最后浏览器访问应用便可

相关文章
相关标签/搜索