uwsgi+nginx 初次部署flask程序

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的虚拟环境

    1. workon 虚拟环境名字
    2. 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值