文档章节

Nginx uWsgi Django环境搭建

-启曙-
 -启曙-
发布于 2015/12/31 10:56
字数 897
阅读 296
收藏 8

由于一个监控项目(使用django开发)交接到所在项目组,需要了解python的web开发和环境搭建。

这里记录环境的搭建流程,以及遇到的问题和处理方案。

环境信息: CentOS 6.6 (内网IP:100.84.73.45) Nginx 1.2.8 Python 2.6.6 Django 1.6 uwsgi 2.0.11.2

注意:Django1.6匹配的python最高版本是2.6,如果安装太高版本的django,需要使用python2.6以上版本,否则安装过程会报错:invalid syntax

这里我的机器自带了python2.6.6,就不介绍python的安装了。

安装pip

pip是python的包管理工具,我们使用pip进行python的管理

# wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
# python get-pip.py

安装uWSGI

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。

  • 使用pip安装 uwsgi
# export LDFLAGS="-Xlinker --no-as-needed"
# pip install uwsgi

  • 测试uwsgi

创建一个test.py的测试文件

# pwd
/home/test/django
# touch test.py
# vim test.py

test.py内容如下:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"
  • 启动uwsgi
# pwd
/home/test/django
# uwsgi --http :13010 --wsgi-file test.py

在浏览器中输入:http://100.84.73.45:13010

uwsgi http方式启动

uwsgi安装和启动正常。

安装django

  • 使用pip安装 django

由于使用的是python2.6.6,因此需要安装1.6版本的django。

安装指定版本的django的方式如下:

# pip install -v django==1.6
  • 新建Django工程
# pwd
/home/test/django
#  django-admin.py startproject MySite
# ls
MySite  test.py
  • 使用uwsgi启动django工程
# pwd
/home/test/django
# cd MySite 
# uwsgi --http :13010 --wsgi-file MySite/wsgi.py

在浏览器中输入:http://100.84.73.45:13010

uwsgi django结合

到此django安装成功,并且和uwsgi结合成功。

  • 补充信息

也可以使用如下命令启动django工程

# pwd
/home/test/django/MySite
# uwsgi --http :13010 --module MySite.wsgi

如果是单独调试django,可以使用django自带的简单服务器进行。

# pwd
/home/test/django/MySite
# python manage.py runserver 0.0.0.0:13010

安装nginx

  • 源码安装nginx

我们采用源码方式安装。 搜狐镜像下载地址:http://mirrors.sohu.com/nginx/ 我选择的是 1.2.8 版本

安装步骤,可以看这里:http://xyuex.blog.51cto.com/5131937/1013414

  • 配置nginx
# pwd
/home/test/local/nginx
# touch nginx_django_unix.conf

nginx_django_unix.conf内容如下:

worker_processes  2;
 
events {
    use epoll;
    worker_connections  1024;
}

http {
    include       conf/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;

    upstream django {
        #server 127.0.0.1:13010; # nginx使用tcp方式与uwsgi交互
        server unix:///home/test/django/MySite/MySite.sock; # nginx使用unix本地socket方式与uwsgi交互
    }

    server {
        listen       13000;
        server_name  uwsgi_django;
        client_max_body_size 75M;
 
        location / {
            uwsgi_pass django;
            uwsgi_pass_header http;
            
            uwsgi_read_timeout 300;
            include conf/uwsgi_params;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
 }
  • 启动uwsgi 和 nginx
# pwd
/home/test/django/MySite
# uwsgi --socket ./MySite.sock --module MySite.wsgi
# cd ~/local/nginx
# pwd
/home/test/local/nginx
# sbin/nginx -c nginx_uwsgi.conf

在浏览器中输入:http://100.84.73.45:13000

nginx uwsgi django打通

到此 nginx uwsgi django三个完成了结合。

过程中遇到的问题

uwsgi的交互方式

nginx与uwsgi有三种交互方式:http、tcp、unix本地sock http方式主要是利用nginx的反向代理功能。 TCP方式是ngix通过tcp方式和uwsgi交互。 unix本地sock是通过本地的sock文件进行交互。

  • 如果使用本地sokc方式,uwsgi的启动应该是
# uwsgi --socket ./MySite.sock --module MySite.wsgi

并且nginx的upsteam配置sock文件地址

  • 如果是TCP方式,uwsig的启动应该是
# uwsgi --socket :13010 --module MySite.wsgi

并且nginx的upsteam配置ip和端口

  • 采用反向代理方式,uwsgi的启动应该是
# uwsgi --http:13010 --module MySite.wsgi

nginx的完整配置如下:

worker_processes  2;
 
events {
    use epoll;
    worker_connections  1024;
}

http {
    include       conf/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;

    upstream django {
        server 127.0.0.1:13010;
    }

    server {
        listen       13000;
        server_name  uwsgi_django;
        client_max_body_size 75M;
 
        location / {
            proxy_pass http://django; # 注意这里使用的是proxy_pass协议是http
            
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
 }

© 著作权归作者所有

共有 人打赏支持
-启曙-
粉丝 9
博文 15
码字总数 11526
作品 0
广州
程序员
私信 提问
加载中

评论(2)

-启曙-
-启曙-

引用来自“W_Lu”的评论

请问socket要怎么写?或者说怎么生成?请赐教!83
nginx配置server:server unix:///home/test/django/MySite/MySite.sock; # nginx使用unix本地socket方式与uwsgi交互 uwsgi启动参数:uwsgi --socket /home/test/django/MySite/MySite.sock --module MySite.wsgi
W_Lu
W_Lu
请问socket要怎么写?或者说怎么生成?请赐教!83
Python-django-uwsgi-nginx环境

Ubuntu 环境搭建: ** linux 系统会自带python,一般不需要特定安装python.查看版本 sudo service nginx restart #重启nginxcd /var/www/projectNameuwsgi --stop uwsgi.pid #关闭原有的 uwsg...

青瓶冷水
2018/09/11
0
0
ubuntu14.04+Django1.7.1+nginx1.6+uwsgi2.0环境搭建

ubuntu下安装django1.7.1先安装pip sudo apt-get install pip 使用pip安装django sudo pip install Django (或者下载官方最新的django包,解压后执行sudo python setup.py install) 安装完...

niceguy_php
2014/12/22
0
0
python + django + bootstrap + uWSGI + nginx 环境搭建

原文:http://www.huangdc.com/103 在了解 uWSGI 之前,我们不妨先了解一下 python http服务器? 要使 Python 写的程序能在 Web 上被访问,还需要搭建一个支持 Python 的 HTTP 服务器,列举几...

dchuang
2015/07/19
0
0
Ubuntu 下面部署Django 项目

django 是 python 开源的 web 框架 ,django 本身运行后也是一个轻量级的服务器,可以满足本地的测试,生产环境中的 大量访问, 一般和nginx 和 apache 结合。下面以 Django 与nginx 结合为例...

水滴石川1
2018/06/26
0
0
nginx + uwsgi + Django 应用部署

今天来看下基于Django开发的应用如何在Centos6环境部署 系统环境:Centos6.5 x64 软件版本:Django 1.9.5 、uwsgi-2.0.13.1 nginx 安装配置(略)请见:http://tchuairen.blog.51cto.com/384811...

qw87112
2018/06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
31分钟前
1
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
37分钟前
1
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
1
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
3
0
跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据 应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点...

周立_ITMuch
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部