【Python3.7 Centos服务部署从0开始】Nginx & uWSGI 必知必会

Nginx 概述

不依赖第三方服务搭建网站服务器及功能

Nginx 作为反向代理器

Nginx不直接处理请求,而是在云主机中有一个Real Server,Nginx只是把请求转发给Real Server,等待Real Server请求处理完成后,再将请求返回给客户端

Nginx 作为负载均衡器

在环境中存在 Nginx, Real Server No.1, Real Server No.2......
Nginx一样执行请发转发,但是在 Nginx 挑选 Real Server 的时候,权重是不一样的,Nginx 中自己的一套逻辑,这套逻辑就是为了负载均衡

假设:Real Server No.1 的权重是3,Real Server No.2 的权重是1,在4个请求过来后,很可能 Real Server No.1 会收到3个请求,Real Server No.2会收到一个请求

CentOS && Nginx

安装 Nginx

yum install nginx

Nginx 常用指令

1.启动Nginx

sudo nginx

判断是否启动成功
在浏览器中输入公网的IP,出现如下的页面则为启动成功

image

2.停止Nginx

快速停止Nginx

sudo nginx -s stop

3.退出Nginx

与上面的 stop 相比会更加优雅一下

sudo nginx -s quit

4.重新加载Nginx的配置文件

在修改完配置后执行该命令

sudo nginx -s reload

5.重新打开Nginx的日志文件

sudo nginx -s reopen

修改Nginx的配置文件

文件存放的位置

cd /etc/nginx/
主配置文件:nginx.conf

Nginx关键配置模块

  • events 配置域:网络连接相关配置(I/O模型等)
  • server 配置域:相关服务节点配置
  • location 配置域:资源路由配置
  • http 配置域:Nginx作为网页服务器时的配置(#mail)
  • upstream 配置域:反向代理配置域

配置存在层级关系

# nginx.conf 五大配置域相关层次关系
events {
    ...
}

http {
    ...
    upstream {
        ...
    }
    
    server {
        ...
        location {
            ...
        }
    }
}

# mail {
#    ...
# }

WSGI 协议概述

全称:Web Server Gateway Interface
是 Web Server 和 Web Application 通信的规范

image

uWSGI概述

  • 实现了WSGI协议
  • Web服务器
  • 接收客户端请求通过协议传达给Django应用

centOS 中安装 python3.7

1.查找python的位置:

whereis python

2.安装相关包,用于下载编译python3

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make 

3.默认的,centos7也没有安装pip

#运行这个命令添加epel扩展源
yum -y install epel-release

#安装pip
yum install python-pip

4.用pip装wget

pip install wget

5.用wget下载python3的源码包

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz

6.手动安装

#解压
xz -d Python-3.7.0.tar.xz
tar -xf Python-3.7.0.tar

#进入解压后的目录,依次执行下面命令进行手动编译
./configure prefix=/usr/local/python3
make && make install

7.添加软链接

#将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak

#添加python3的软链接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python

#测试是否安装成功了
python -V

8.更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用

vi /usr/bin/yum
# 把 #! /usr/bin/python修改为#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down
# 把 #! /usr/bin/python 修改为#! /usr/bin/python2

9.修改pip的python版本
原先的pip文件是以python2为默认版本

查找pip的位置
whereis pip => /usr/bin/pip # 这里面会有很多其他的pip,比如pip2,pip3,pip3.6等

vim /usr/bin/pip
#!/usr/bin/python2   ==>  #!/usr/bin/python3

centOS 中安装 uWSGI

1.通过pip安装 uWSGI

pip install uwsgi

如果出现
致命错误:Python.h:没有那个文件或目录
执行如下命令

yum install libffi-devel -y

2.添加软连接

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/sbin/uwsgi

uWSGI的基础配置

  • chdir: WSGI 应用目录
  • module:WSGI 应用的模块名字
  • processes:uWSGI 进程数
  • (http-)socket:套接字路径、地址
  • max-requests:最大并发请求数
  • vacuum:当服务器退出时是否需要自动清理文件,删除相关的pid文件 socket文件 (Boolean)

uWSGI启动(两种方式)

1.通过命令行启动

将配置通过命令行写入,进而启动

uwsgi --chdir xxxx --socket :80 --max-requests 5000 --processes 4 --module xxx.wsgi

--chdir xxxx (指定 uwsgi 的应用目录)
--socket :80 (指定端口)
--max-requests (最大请求数)
--processes (处理的进程数)
--module (指定具体的wsgi模块)

2.使用配置文件启动

1.创建 uwsgi 的配置文件

vim uwsgi-demo.ini

2.写入配置文件

[uwsgi]

chdir = /xxxx/xx

http-scoket = :80

max-requests = 5000

processes = 4

module = xxx.wsgi

3.通过命令行执行 wsgi 的配置

uwsgi --ini uwsgi-demo.ini

为什么需要uWSGI部署Django

  • Django runserver 可以直接对外服务,但是只用于测试,不安全且性能较差
  • uWSGI可以很好的进行多线程调用、进程监控,例如:uWSGI会监测django服务是否挂了,挂了会主动重启
  • uWSGI提供完善的请求日志处理

使用 uWSGI 部署测试

image

1.创建一个文件夹

mkdir deployment
cd deployment

2创建Python文件,定义uWSGI应用

touch uwsgi_test.py

3.写入相关配置

def application(env, start_response):
    start_response('200 OK', [('Content-type', 'text/html')])
    return [b'Hello World, Hello uWSGI']

4.运行 uwsgi

uwsgi --http :8000 --wsgi-file uwsgi_test.py

使用 uWSGI 部署 django

1.修改 django 的 setting

ALLOWED_HOSTS = ['*']  # 开启所有人都可以访问

2.找到 django 目录下的 wsgi文件执行
django_deployment.wsgi为对应django项目下的文件相对路径

uwsgi --http :8000 --module django_deployment.wsgi
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容