1. WSGI ,uWSGI,Nginx, web框架,web服务器。
WSGI
:Web socket gateway interface
是一种规范 是用来规范 服务器和应用的。也是一种协议。
可以做到任意一个web服务器 都可以搭配任意一个框架
只要web服务器和web框架 满足WSGI协议。他们就可以相互搭配。
在python中 经常使用 uwsgi 和nginx 来部署一个web框架。flask就是这样的。
uWSGI
就是实现了WSGI协议的一个web服务器。
web服务器
和web框架
web服务器是指 用来接收客服请求的 建立连接的 转发响应的程序。
至于转发的内容 交由web框架来处理。即处理这些业务的逻辑。、这些逻辑就是 数据库的增删改查。 Nginx 就是一个web服务器 flask 就是一个web框架。
Nginx
当访问量过大 客户端就要进行长时间的等待 这个时候就出现了分布式的服务器 。Nginx就是来分配客户端的请求连接和web服务器的 也就是Nginx的实现 反向代理。
代理服务器
2. uwsgi的配置。
-
首先 在自己的flask的虚拟环境
- workon 虚拟环境名字
- cd 项目所在的文件目录
-
安装
pip install uwsgi
-
配置(在项目所在的目录下 新建uwsgi.ini)
- uwsgi.ini 文件 的配置
[uwsgi] # 使用nginx 连接时 使用 #socket = 0.0.0.0:88 #直接作为web服务器使用 http = 0.0.0.0:88 #配置工程目录 chdir = /tmp/first_flask_online #配置项目的wsgi目录 相对于工程目录 #适用于flask项目的部署 #写的是 项目的启动文件 wsgi-file = app_test_manager.py # router callable = app #配置进程 线程信息 processes = 4 threads = 10 enable-threads = True master = True pidfile = uwsgi.pid daemonize = uwsgi.log
-
注意事项
确保服务器开启了 相应的端口
服务器的防火墙放行了相应的端口 (放行策略)
查看防火墙放行那些端口:firewall-cmd --list-ports
-
启动和关闭命令
uwsgi --ini uwsgi.ini
uwsgi --stop uwsgi.pid
-
查看 ps -aux | grep uwagi
root 7545 0.0 1.1 164128 42648 ? S 22:43 0:00 uwsgi --ini uwsgi.ini root 7549 0.0 0.9 827716 36516 ? Sl 22:43 0:00 uwsgi --ini uwsgi.ini root 7550 0.0 0.9 827716 36516 ? Sl 22:43 0:00 uwsgi --ini uwsgi.ini root 7560 0.0 0.9 827716 36516 ? Sl 22:43 0:00 uwsgi --ini uwsgi.ini root 7561 0.0 1.1 832036 42888 ? Sl 22:43 0:00 uwsgi --ini uwsgi.ini root 7622 0.0 0.0 12112 1036 pts/0 S+ 23:00 0:00 grep --color=auto uwsgi
-
这时候访问 ip:88 即可访问到flask的项目首页了。
3. Nginx 和 uWSGI的结合
-
nginx的安装。可借鉴https://www.cnblogs.com/paul123/p/11065720.html
-
nginx的相关命令
查看信息:nginx -v 查看进程:ps -ef|grep nginx 杀死进程:kill -9 进程号 控制nginx: 关闭:nginx -s stop 重新加载:nginx -s reload 启动:nginx -c xx/xx/nginx.conf(配置文件的绝对路径) 测试(不会启动):nginx -t xx/xx/nginx.conf(配置文件的绝对路径) 系统查看: 状态查看:systemctl status nginx 启动服务:systemctl start nginx 关闭服务:systemctl stop nginx 禁止自启:systemctl disable nginx 注意: 出现:-bash: nginx: No such file or directory 可以将 nginx 路径写全。假设nginx在 /usr/local/下时 将 nginx 写成 /usr/local/nginx(即使用绝对路径访问)
注意事项
确保服务器开启了 相应的端口
服务器的防火墙放行了相应的端口 (放行策略)
查看防火墙放行那些端口:firewall-cmd --list-ports
-
和uwsgi结合
在flask 项目文件中 创建 nginx.conf
user root; worker_processes 1; error_log /usr/local/nginx/logs/error.log info; pid /usr/local/nginx/logs/nginx.pid; events { worker_connections 1024; } http { include /usr/local/nginx/conf/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 /usr/local/nginx/logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #动静分离 #静态(js,css 等) 去找nginx #动态编译的 找uwagi #实现访问速度的增加 root /tmp/flask_project; # 静态配置 location /static { alias /tmp/flask_project/static; } # 动态配置 location / { # 这里去找到 uwsgi_params文件 实现 nginx和uwsgi的连接 结合 include /usr/local/nginx/conf/uwsgi_params; uwsgi_pass localhost:88; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
-
先启动nginx :/usr/local/nginx/sbin/nginx -c /tmp/flask_project/nginx.conf
-
再启动UWSGI:uwsgi --ini uwsgi.ini
-
在浏览器访问:输入ip 访问
注意事项
确保服务器开启了 相应的端口
服务器的防火墙放行了相应的端口 (放行策略)
查看防火墙放行那些端口:firewall-cmd --list-ports