uwsgi介绍

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

  1. WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
  2. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
  3. 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
  4. uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

uwsgi性能非常高

uWSGI的主要特点如下

  1. 超快的性能
  2. 低内存占用(实测为apache2的mod_wsgi的一半左右)
  3. 多app管理(终于不用冥思苦想下个app用哪个端口比较好了-.-)
  4. 详尽的日志功能(可以用来分析app性能和瓶颈)
  5. 高度可定制(内存大小限制,服务一定次数后重启等

Uwsgi 安装使用

pip install uwsgi

Nginx安装使用 

这里以centos7为例进行安装

安装Nginx源

执行以下命令:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装该rpm后,我们就能在/etc/yum.repos.d/ 目录中看到一个名为nginx.repo 的文件。

安装Nginx

安装完Nginx源后,就可以正式安装Nginx了。

yum install -y nginx

环境准备好之后下面就开始进行部署了:

这里我们的项目目录为/OSAOP,首先在项目目录下创建一个script文件放置uwsgi配置文件和日志

mkdir /OSAOP/script

然后按照以下步骤进行

一、配置uwsgi,为了配置负载均衡我们这里准备两个uwsgi的配置文件,启动2个wsgi进程

vim uwsgi.ini

写入如下配置信息:

[uwsgi]
#使用nginx连接时使用,Django程序所在服务器地址
socket=192.168.92.134:8000
#直接做web服务器使用,Django程序所在服务器地址
#http=192.168.92.134:8000
#项目目录
chdir=/OSAOP
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=OSAOP/wsgi.py
# 进程数
processes=5
# 线程数
threads=4
# uwsgi服务器的角色,开启master, 将会多开一个管理进程, 管理其他服务进程
master=True
# 存放进程编号的文件
pidfile=/OSAOP/script/uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的    #python  manager  runserver是依赖终端的
daemonize=/OSAOP/script/uwsgi.log
# 指定静态文件
static-map=/static=/OSAOP/staticfiles
# 启动uwsgi的用户名和用户组
uid=autohp
gid=autohp
#默认的uwsgi分配一个小的buffer(4kb)来接收每个请求的头信息,设置为50kb
buffer-size  = 51200
二、配置另外一个uwsgi文件

vim uwsgi2.ini

然后写入如下配置信息:

[uwsgi]
#使用nginx连接时使用,Django程序所在服务器地址
socket=192.168.92.134:8001
#直接做web服务器使用,Django程序所在服务器地址
#http=192.168.92.134:8001
#项目目录
chdir=/OSAOP
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=OSAOP/wsgi.py
# 进程数
processes=5
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=/OSAOP/script/uwsgi2.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的    #python  manager  runserver是依赖终端的
daemonize=/OSAOP/script/uwsgi2.log
# 指定静态文件
static-map=/static=/OSAOP/staticfiles
# 启动uwsgi的用户名和用户组
uid=autohp
gid=autohp
buffer-size = 102400
三、到此处两个uwsgi的配置文件已经配置完成,下面开始配置Nginx

打开nginx的配置文件:

vim /etc/nginx/nginx.conf

输入如下信息:

user root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
    #tcp_nopush     on;

keepalive_timeout  65;

#gzip  on;

#include的作用是可以将server的配置信息写到conf.d目录下面的conf文件

include /etc/nginx/conf.d/*.conf;
   upstream OSAOP {

server 192.168.92.134:8000;

server 192.168.92.134:8001;

}
 }

然后保存信息后打开default.conf配置server信息

vim  /etc/nginx/conf.d/default.conf

可以将文件的原内容全部清空,下入以下信息:

server {
    listen         80; 
    server_name    192.168.92.134 
    charset UTF-8;
    access_log      /var/log/nginx/myweb_access.log;
    error_log       /var/log/nginx/myweb_error.log;
 
    client_max_body_size 75M;
 
  # 设置媒体文件目录
    location /media  {
        alias /OSAOP/media/; 
    }
    # 设置静态文件目录
    location /static {
        expires 30d;
        autoindex on; 
        add_header Cache-Control private;
        alias /OSAOP/staticfiles/;
     }
   location / {
            include uwsgi_params;
            uwsgi_pass OSAOP;
        }
 }
到此已经完成了所有配置,并实现了对两个端口的负载均衡,下面启动uwsgi和nginx

uwsgi --ini uwsgi.ini

uwsgi --ini uwsgi2.ini

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

uwsgi停止命令:

uwsgi --stop /OSAOP/script/uwsgi.pid

uwsgi --stop /OSAOP/script/uwsgi2.pid

nginx重启命令:

/usr/sbin/nginx -s reload

启动之后可以查看uwsgi和nginx进程:

ps -ef|grep uwsgi
ps -ef|grep nginx

nginx+uwsgi负载均衡部署django项目相关推荐

  1. Nginx+uwsgi+celery+supervisor部署Django前后端分离项目

    转载 Nginx+uwsgi+celery+supervisor部署Django前后端分离项目 ljmict 0人评论 3887人阅读 2018-08-08 01:29:45 本实验实现了负载均衡.反 ...

  2. 使用uwsgi和gunicorn部署Django项目

    https://uwsgi-docs.readthedocs.io/en/latest/Management.html https://uwsgi-docs.readthedocs.io/en/lat ...

  3. 部署Django项目到阿里云(五)——反向代理及均衡负载技术Nginx

    上一篇:部署Django项目到阿里云(四)--用uWSGI运行Django项目 在上节中,已经能将django项目部署到阿里云,远程连接了. 但是实际项目中,一般一台服务器满足不了高并发的要求,所以为 ...

  4. 基于nginx和uWSGI在Ubuntu系统上部署Django项目

    1. nginx 1.1 安装 sudo apt-get install nginx 1.2启动.停止和重启 sudo /etc/init.d/nginx start sudo /etc/init.d ...

  5. nginx、uwsgi部署django项目理论+实战

    基本环境: Ubuntu 16.04.4 LTS python 3.5 virtualenv django project deployable #理论分析   部署django项目有很多方法,方法推 ...

  6. 使用Nginx+uWSGI部署Django项目

    1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgiln ...

  7. 阿里云部署Django项目(nginx+uWSGI)-2018.11

    前言:部署的前提是你的项目已经在本地完成可以运行了,我的本地环境是ubuntu16.04+python3.5+Django2.1.2+Mysql,在python虚拟环境(virtualenv)下建的项 ...

  8. Ubuntu nginx+uwsgi部署Django项目

    前提条件:首先项目使用一下命令启动成功后,输入公网ip后可以启动成功 python manage.py runserver 0.0.0.0:80 一.阿里云配置安全组 添加8000端口 二.安装配置u ...

  9. centos7根据端口查进程_记录一次CentOs7下Nginx+WSGI部署Django项目(超详细)

    记录一次Django部署的文章,不是很熟悉Linux系统,踩了不少坑,本篇文章相当于是一个总结,我会在本文中详细介绍,部署单个Django项目和多个Django的方法,如读者有更好的方法,欢迎留言一起 ...

最新文章

  1. PHP 算法题:有多少苹果用来分赃1.1
  2. 基于 Annotation 拦截的 Spring AOP 权限验证方法
  3. 八十四、SpringBoot微服务Dubbo和Zookeeper分布式
  4. 太阳能计算机屏幕是什么材质,魅蓝E的屏幕怎么样?屏幕材质是什么?
  5. Java的JDBC事务详解
  6. plsql轻量版记录类型2
  7. 太棒了!输入文本直接生成流程图
  8. Python笔记(4) 关键字
  9. 构建企业大数据生态的关键在于 , 打通内部数据!
  10. Python关键字和标识符
  11. Android Studio 常用快捷键
  12. 免费资源网站,你想要的全都有【各类宝藏资源 】
  13. 92套AE抖音快闪模板(精品)
  14. 翻译: 巴菲特公式:睡觉比醒来更聪明
  15. 视网膜屏幕_视网膜脱离-了解这一点很重要
  16. adb install 命令参数
  17. [调研] 人脸/车牌脱敏 调研
  18. c语言中数组arr的表示含义
  19. WideDeep Model、Wide Model(LR)、Deep Model、DeepFm Model、NFM Model复现笔记
  20. ChessBoard棋盘覆盖问题

热门文章

  1. 开发一个看番app[樱花动漫移动端app]
  2. z6青春版刷Android11,联想Z6青春版官方安卓9.0固件线刷降级包:L38111_ZUI_11.0.100
  3. 学习NEO开发如何进阶
  4. 实时天气降水、气温、风力图作为Windows动态壁纸
  5. MySQL新闻发布系统
  6. 微信公众号/小程序errcode 错误码 大全
  7. 小学计算机课程介绍鼠标,小学信息技术《认识鼠标》
  8. 安装双系统无法连接到软件服务器,MAC安装双系统,WIN10系统下不能登录qq,不能登录优酷,什么原因?...
  9. Android Charles抓包
  10. OS-Revision---进程同步