美文网首页我的Python自学之路
配置Nginx和uWSGI搭建Django运行环境

配置Nginx和uWSGI搭建Django运行环境

作者: 337736a7277f | 来源:发表于2015-12-27 20:39 被阅读335次

    不久前试用了阿里云的ECS,用来试着部署之前用Django写的一个博客,遇到了不少问题啊TvT在Google上搜出来的方法都是旧的没法解决问题呢,所以就摸索着弄,最后不得不说,官方文档才是人类的好基友啊(缺胳膊少腿的我们暂时忽略掉吧)!

    更新和安装需要的包

    我使用的系统是64位的CentOS 6.5

    yum -y update
    yum install -y epel-release sqlite-devel zlib-devel.x86_64 openssl-devel.x86_64 python-devel
    

    安装PCRE

    下载并解压

    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
    tar zxvf pcre-8.37.tar.gz
    

    编译安装

    cd pcre-8.37
    ./configure
    make && make install
    

    安装完成后可以查看版本号pcre-config --version

    安装Nginx

    我这里用的是1.8.0 stable 版本,先下载然后解压进目录进行配置编译安装,这里直接给出命令不再详述

    wget http://nginx.org/download/nginx-1.8.0.tar.gz
    tar nginx-1.8.0.tar.gz
    cd nginx-1.8.0
    ./configure --prefix=/usr/local/nginx
    make && make install
    

    安装uWSGI

    在上一篇升级Python的博客里已经顺便安装好了pip,现在派上用场了

    pip install uwsgi
    

    安装Django

    pip install django
    

    到这里我们已经把需要安装的东西都准备好了,现在开始进行配置

    配置

    配置uWSGI

    假设我们已经有一个Django的项目叫blog,路径是/var/www/blog/,现在进入这个项目的目录下,新建一个blog.ini文件,添加如下内容

    [uwsgi]
    uid = www
    gid = www
    
    chdir = /var/www/blog
    module = blog.wsgi
    
    master = true
    processes = 10
    
    socket = /tmp/blog.sock
    chmod-socket = 664
    
    vacuum = true
    
    daemonize = /var/www/blog/blog.log
    

    配置Nginx

    创建 Nginx 运行使用的用户 www:

    /usr/sbin/groupadd www
    /usr/sbin/useradd -g www www
    

    编辑Nginx的配置文件nginx.conf

    vi /usr/local/nginx/conf/nginx.conf
    

    将第一行的#user nobody; 改成 user www www;
    然后找到下面这两行,去掉注释#

    #error_log  logs/error.log;
    #pid        logs/nginx.pid;
    

    然后在http {}块内的最下面添加以下内容

    upstream blog {
      server unix:///tmp/blog.sock;
    }
    
    server {
      listen 8000;
      server_name .example.com;
    
      charset utf-8;
    
      client_max_body_size 75M;
    
      location /media {
        alias /var/www/blog/media;
      }
    
      location /static {
        alias /var/www/blog/static;
      }
    
      location / {
        uwsgi_pass blog;
        include uwsgi_params;
      }
    

    噔噔!我们已经完成了Nginx的基础配置了,想要了解更多Nginx的具体配置请参考官方提供的完整配置示例

    启动测试

    开启Nginx

    在启动Nginx之前先对配置文件的语法进行检查

    /usr/local/nginx/sbin/nginx -t
    

    确认无误后启动Nginx

    /usr/local/nginx/sbin/nginx
    

    这时可能会出现如下的错误

    nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
    

    只需要执行以下这条命令就可以解决问题了

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    

    Nginx的常用命令有

    /usr/local/nginx/sbin/nginx -s reload|reopen|stop
    

    分别是重新读取配置文件,重新启动以及停止

    开启uWSGI

    启动Nginx(请参考前面)之后,我们再来启动uWSGI

    uwsgi --ini /var/www/blog/blog.ini
    

    开启成功之后就可以访问Nginx配置里server_name所对应的ip或域名进行访问了,如这里的配置示例,我们访问http://example.com:8000就可以看到创建好的blog啦!

    更多参考文档

    Another nginx.conf Full Example
    Setting up Django and your web server with uWSGI and nginx
    How To Serve Django Applications with uWSGI and Nginx on Ubuntu 14.04


    本文在博客TNK异步上线~

    相关文章

      网友评论

        本文标题:配置Nginx和uWSGI搭建Django运行环境

        本文链接:https://www.haomeiwen.com/subject/vkpbhttx.html