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,出现如下的页面则为启动成功
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 通信的规范
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 部署测试
image1.创建一个文件夹
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
网友评论