nginx+uwsgi+virtualenv+django搭建django生产运行环境

Posted 运维技术前线

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx+uwsgi+virtualenv+django搭建django生产运行环境相关的知识,希望对你有一定的参考价值。

我们平常用 python manage.py runserver 来运行服务器,来调试代码,但这只适用测试环境中使用。

生产环境中如何运行python web应用?
下面介绍nginx+uwsgi+virtualenv+django的架构搭建生产运行环境

组件介绍:
virtualenv:开发多个应用程序,用的组件版本不一样,会产生版本冲突,virtualenv可以用来为一个应用创建一套“隔离”的Python运行环境

uwsgi的作用:uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议,web框架致力于如何生成html代码,而web服务器用于处理和响应http请求,uwsgi也就是处理动态请求,uwsgi是服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回

django:web框架

nginx:http静态服务器,处理静态文件css,html,img

一、安装python虚拟环境virtualenv

yum install python-pip
pip install —upgrade pip
pip install virtualenv

二、uwsgi

  • 1.安装uwsgi
    pip install uwsgi
    uwsgi —version # 查看 uwsgi 版本
    如果安装失败,可能缺少python头文件和静态文件
    yum install python-devel

  • 2.配置uwsgi启动参数

    [uwsgi]
    # Django-related settings
    # Django项目本地端口
    socket = 127.0.0.1:9090
    # 项目根目录位置,pyops代表django项目
    chdir = /scripts/pyops
    # wsgi.py文件在项目的中的相对位置
    wsgi-file = /scripts/pyops/pyops/wsgi.py
    module =pyops.wsgi
    # 进程设置,无需变动
    # master
    master = true
    # maximum number of worker processes
    # 启动4个uwsgi进程
    processes = 4
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum = true
    pidfile=/var/run/uwsgi.pid
    daemonize = /tmp/uwsgi9090.log    # 日志文件
  • 3.测试uwsgi
    source /scripts/env/pyops/bin/activate uwsgi —http :8088 —chdir /scripts/pyops/ —wsgi-file pyops/wsgi.py curl http://127.0.0.1:8088 可以测试浏览页面

  • 启动uwsgi,注意:要激活虚拟环境再启动uwsgi,否则uwsgi报错加载不了python库。如不成功看日志分析/tmp/uwsgi9090.log


  • 4.后台运行启动uwsgi
    source /scripts/env/pyops/bin/activate
    uwsgi —ini /etc/uwsgi/uwsgi9090.ini


三、nginx安装配置

  • 1.nginx安装
    yum install nginx

  • 2.配置nginx for uwsgi

server{
listen 80;
server_name test.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090; # 和uwsgi的设置一样
}
}

注意:此种方法只需配两个参数即可include uwsgi_params,uwsgi_pass,其余配置在uwsgi.ini中配。


  • 3.启动nginx
    service nginx start

  • 4.访问:
    test.com



以上是关于nginx+uwsgi+virtualenv+django搭建django生产运行环境的主要内容,如果未能解决你的问题,请参考以下文章

08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

CentOS下实现Flask + Virtualenv + uWSGI + Nginx部署

[原创]Flask+uwsgi+virtualenv+nginx部署配置

nginx+uWSGI+django+virtualenv+supervisor发布web服务器

nginx_uWSGI_django_virtualenv_supervisor发布web服务器

nginx+uWSGI+django+virtualenv+supervisor发布web服务器