django+gunicorn+nginx

来源:互联网 发布:衣品好的女明星知乎 编辑:程序博客网 时间:2024/06/06 02:24

最近在搞有关于web的东西,学习了有关于Python的django框架,这个框架对于熟悉web的人来说非常容易上手,即使对于我这种之前对于web没有什么概念的人,用了十天左右也可以搭建出来一个小型的网站系统。django自带有一个开发服务器,运行代码为:

[plain] view plain copy
 print?
  1. python manage.py runserver  

这个命令后面可以跟参数,设定ip地址和端口号

实际测试时,这个开发服务器比较方便,实际部署时则不能使用这个简单的初级服务器,需要进行一定的配置,这里我选用的是nginx和gunicorn

先说明一下开发环境,由于django的版本一直是为人所诟病的,所以环境是非常重要的

服务器:腾讯云,搭载ubuntu14.04 64位操作系统

python :2.6

django: 1.9.1

配置步骤如下,注意这里只是最基础的配置:

1、安装nginx

[plain] view plain copy
 print?
  1. sudo apt-get install nginx  

2、安装gunicorm,由于这个包是基于python编写的,因此可以用pip安装

[plain] view plain copy
 print?
  1. pip install gunicorn  

3、运行开发服务器,确定整个django工程是正常的

4、配置nginx

切换到/etc/nginx/site-avaliable目录下,先备份一下default文件,然后修改,我的配置如下:

[plain] view plain copy
 print?
  1. server {  
  2.      listen 8000;  
  3.   
  4.      server_name 123.206.96.185;  
  5.   
  6.      location / {  
  7.          proxy_pass http://0.0.0.0:8020;  
  8.          proxy_set_header Host $host;  
  9.          proxy_set_header X-Real-IP $remote_addr;  
  10.          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  11.      }  
  12.      location /static {  
  13.        alias  /home/ubuntu/Blog/blogApp/static;  
  14.     }     
  15. }  
注意几个点,一个是listen,也就是监听端口,二是server_name写公网ip或域名,另外proxy_pass是之后gunicorn绑定的ip地址和端口号,需要一致对应,最后就是静态文件的配置,地址写静态文件存放的地方,便于网页显示css、js等静态文件。

配置完毕后,用nginx -t命令检查配置文件,如果成功,则重启nginx ,命令为nginx retart

5、配置gunicorn,这个配置还是比较简单的,在django的setting.py文件中app目录加载上gunicorn然后在工程目录下直接运行启动代码

[plain] view plain copy
 print?
  1. gunicorn appname.wsgi:application --bind 0.0.0.0:9090  
按照实际工程配置路径和ip及端口号

6、此时再次重启nginx,此时如一切正常,则配置完毕。

注意几点

1、gunicorn启动时有时会出现error,大部分原因是端口号被占用了

2、静态文件如果没有集中在一起,在配置之前先要执行如下代码收集整个工程的静态文件

[python] view plain copy
 print?
  1. python manage.py collectstatic  
3、django工程中还要加入静态文件的路径
[plain] view plain copy
 print?
  1. STATIC_URL = '/static/'  
  2. STATIC_ROOT = 'static/'