• Flask+uwsgi+nginx 部署


    部署概述:

      将代码上传至云服务器,使用python3 -m venv env 创建虚拟环境,使用source env/bin/active.. 激活虚拟环境, 通过pip install -r requirements.txt 文件安装模块,编写配置文件uwsgi(自己添加模块安装), 使用uwsgi --ini uwsgi.ini 启动( uwsgi --reload uwsgi.pid 重启,uwsgi --stop uwsgi.pid 关闭,pid文件需配置后才有),最后编辑nginx配置文件,如果使用yum安装的nginx,配置文件一般在/etc/nginx/nginx.conf, 模板文件在/usr/share/nginx中,输出文件一般在conf文件中指定了,最后使用nginx -c /etc/nginx/nginx.conf 启动(最好先 -t 检测哈)

    1、首先问题:启动nginx后,公网什么都没反应?

      这种情况下,首先查看nginx的日志,这里配置在/var/log/nginx中的error.log, 如果这时候浏览器访问了但是没有日志,那多半是公网被拦截了,需要去看看你的云服务器的安全策略是否开启对应的端口,其次可以在本地使用curl -i localhost:8000 来查看我们的服务在本地是否可以访问,如果本地都访问不了,那说明服务启动失败。也可以使用:netstat -tlunp查看对应的端口是否开启。

     2、访问到nginx的日志文件,出现无数多次redirect重定向,这是由于nginx配置中,的try_files配置项的作用,导致无数次重连接

      参考如下nginx配置:

        server {
            listen       80;
            server_name  localhost;
            # Load configuration files for the default server block.
            
            location / { 
                    root /root/wanxxx/xxx/wan_front/out_file/;
                    index index.html;
                    try_files $uri $uri/ =404;   # 这里直接配置为404,不重定向
            }
            
            error_page 404 /404.html;
                location = /40x.html {
            }
            
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
       server {
            listen 5001;
            server_name xxx.xxx.8.16;
            location / {
                    include uwsgi_params;
                    uwsgi_pass  0.0.0.0:5000;
            }
    
       }
    

      上面的nginx配置是一个前后端分离项目的配置,对外暴露80端口,访问后得到前端代码和页面,在页面中的api请求会发给5001端口,nginx针对5001做代理,转发给后端5000端口。

    3、前端页面能访问到,但是后端动作没有效果,查看uwsgi.log文件发现,每次访问日志:--- no python application found, check your startup logs for errors ---,再往上看看就发现是因为有一个模块无法导入,其实本质上是由于python的环境有问题,明明切换到虚拟环境的。所以我们需要注释掉虚拟环境,或者其他方法

      参考uwsgi.ini

    [uwsgi]
    socket = 0.0.0.0:5000
    #由于外部还要嵌套Nginx,这里可以使用socket进行通信,如果Nginx和uwsgi部署在同一台机器上,直接使用127.0.0.1
    #如果外部直接通过uwsgi访问服务,需将socket改为http-socket或者http,将127.0.0.1改为0.0.0.0
    chdir = /root/wane/wanhe
    #项目目录
    #virtualenv = /root/wane/env
    #虚拟环境所在路径
    wsgi-file = manage.py
    master = true
    callable = app
    buffer-size = 32768
    #超时时间(秒)
    daemonize =./uwsgi.log
    #进程会在后台运行,并输出日志
    pidfile = ./uwsgi.pid
    

      

  • 相关阅读:
    javascript 函数介绍
    javascript 日期对象(date)详解
    js 计算过去和未来的时间距离现在多少天?
    phpcms 模板常用标签指南
    checkbox radio 样式重写
    datatable-固定行固定列
    表格-固定列 固定行
    axios 请求数据 入门级介绍
    图片上传的问题-偶现base64图片 小黑块问题
    cropper.js图片裁剪——第二弹
  • 原文地址:https://www.cnblogs.com/double-W/p/12910785.html
Copyright © 2020-2023  润新知