一、Flask部分(app.py)

flask即Python代码:部分参考代码如下,相信很多人如果看到这篇文章一定有flask的代码能力。

from app import create_app
from singtec_Config import * app = create_app(DEV_MODEL) @app.route('/')
def hello_world():
return 'Hello World!!!' if __name__ == '__main__':
app.run(host='0.0.0.0',port=8000)

二、uwsgi部分(uwsgi.ini)

简单介绍一下uwsgi:在python web开发中,我们经常使用uwsgi配合nginx部署一个web框架,如Djangoflask。同时我们又会说,框架和web服务器之间要符合WSGI协议。那就来厘清一下这几个概念。

1、web服务器和web框架

  web服务器即用来接受客户端请求,建立连接,转发响应的程序。至于转发的内容是什么,交由web框架来处理,即处理这些业务逻辑。如查询数据库、生成实时信息等。Nginx就是一个web服务器,Djangoflask就是web框架。

2、WSGI和uwsgi

  WSGI是一种通信协议。WSGI 不是框架,也不是一个模块,而是介于 Web应用程序(Web框架)与 Web Server 之间交互的一种规范。

  uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

  uwsgi是一种通信协议,不过跟WSGI分属两种东西,该协议下速度比较快。

[uwsgi]
# 如果使用nginx就用socket
socket=0.0.0.0:8000 # 如果不使用socket,直接用uwsgi启动程序,就是用http
#http=0.0.0.0:8000 # 如果程序中有文件下载,图片、视频等就需要就上这个配置
sgi-disable-file-wrapper=true # flask程序在你服务器上的目录
chdir=/opt/www/singtec/www/singtecProject # flask项目的启动文件
wsgi-file=manage.py
# 启动文件中的flask app(即第一部分中的app)
callable=app # 启动的进程数
processes=4 #启动的线程数
threads=2 # 是否启动多线程
enable-threads=True # 是否将uwsgi的运行线程设置为主线程,如果设置为主进程,在开启的其他的子进程会随着主进程关闭而关闭
master=True # 设置用来记录uwsgi进程号的文件
pidfile=uwsgi.pid # 设置uwsgi运行的日志文件(可以记录程序运行的)
daemonize=uwsgi.log #在每个worker而不是master中加载应用
lazy-apps=true # 设置编码(不是必须)
env LANG="en_US.UTF-8"
env LANGUAGE="en_US.UTF-8"

三、nginx部分

  简单介绍一下nginx:Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

常用功能:反向代理、正向代理、负载均衡、服务器的动静分离、高可用等,这里就不一一介绍了,主要介绍一下关于uwsgi的配置。

# 设置用户
user root;
# 设置worker及可以理解为进程或者线程数
worker_processes 4;

# 日志设置
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;

# 每个worker的最大连接数
events {
worker_connections 1024;
} # http全局设置
http { # 设置mine.type类型
include 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 logs/access.log main;   # 如果有上传文件,例如视频或者图片,限制文件传输大小的
client_max_body_size 100M;  
    # 服务器级别的设置
server {      # 设置监听端口
listen 80;
     # 设置访问的域名
server_name localhost;

     # 请求级别的设置 

     # /便是监听什么参数都没有的根目录请求

     location / {

       # 设置请求的根目录

       root   /opt/www/singtec;

          # 设置根目录的请求静态index.html

index  index.html index.htm;

         # 一下两行是设置请求的时候解析真实地址的

proxy_set_header X-Real-IP $remote_addr;


proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

     # 设置监听请求以api开头的接口

location /api{


# 设置导入uwsgi_params文件(通常在nginx安装的时候,默认和nginx.cong文件在同一个目录下)

include /usr/local/nginx/conf/uwsgi_params;

          # 设置nginx的反向代理路由,只要请求api开头的都去访问0.0.0.0:8000程序,及我们的flask程序的接口,实现uwsgi的反向代理

uwsgi_pass 0.0.0.0:8000;

}

    }

python部署-Flask+uwsgi+Nginx的更多相关文章

  1. python Linux flask uwsgi nginx 在centos7.3部署

    0.直接上uwsgi和nginx安装命令 linux 安装uwsgi yum groupinstall "Development tools" yum install zlib-d ...

  2. 阿里云部署 Flask + uWSGI + Nginx

    一.引言 今天入手了一台阿里云服务器,是centeros 7.5版本.本文解决的是 Flask 的部署问题.假设你的Flask的应用已经完成,现在只是部署的问题,本文以部署我的二次开发微信订阅号的项目 ...

  3. 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程

    学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...

  4. Flask+uwsgi+Nginx+Ubuntu部署

    学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Pyth ...

  5. Flask+uwsgi+Nginx+Ubuntu部署教程

    学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...

  6. 阿里云部署 Flask + WSGI + Nginx 详解

    抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...

  7. windows下apache + mod_wsgi + python部署flask接口服务

    windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...

  8. Python 部署 flask 用uwsgi和nginx

    安装uwsgi nginx 具体方法请百度 1.在项目目录下建立.ini文件 xad_uwsgi.ini [uwsgi] master=true #项目目录 chdir=/root/zhaoyingj ...

  9. 使用Flask+uwsgi+Nginx部署Flask正式环境

    环境准备 在开始正式讲解之前,我们将首先进行环境准备. Step1:安装Python,pip以及nginx: sudo apt-get update sudo apt-get install pyth ...

随机推荐

  1. anconda添加镜像源

    # anaconda 安装镜像源 ***     在使用安装 conda 安装某些包会出现慢或安装失败问题,最有效方法是修改镜     像源为国内镜像源.     之前都选用清华镜像源,但是2019年 ...

  2. Linux中MySQL二进制安装步骤

    MySQL二进制安装步骤 安装依赖环境 [root@node3 ~]# yum -y install libaio 将mysql-5.7.26-linux-glibc2.12-x86_64.tar.g ...

  3. vscode在执行 npm任务的时候,会先执行package的name@version 然后命令名 加 当前路径,问题是我的引入路径e是小写的,会导致调试错误,解决方案:没找到,先手书吧

    vscode在执行 npm任务的时候,会先执行package的name@version 然后命令名 加 当前路径,问题是我的引入路径e是小写的,会导致调试错误,解决方案:没找到 Executing t ...

  4. 最全ElasticSearch6.5白金版本从构建ELK、集群搭建到和Mybatis结合操作详细讲解

    1.安装ElasticSearch6.5.1 解压相关的ElasticSearch6.5.1的tar包到目录下,如果我们需要使用JDBC来连接的话是需要到白金版以上的,以下为将基础版破解为白金版的方法 ...

  5. Delphi10.3的DBGrid中memo类型显示内容而不是(WIDEMEMO)

    1]连接好数据库,并显示: 2]增加所有字段: 3]添加事件: //    FDQuery1UserName: TWideMemoField; procedure TForm1.FDQuery1Use ...

  6. JSP+Servlet+C3P0+Mysql实现的网上蛋糕店

    本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/PositiveMumu/CakesShop/tree/master 这次分享一个蛋糕商场系统,还是很简单的系统.界 ...

  7. python环境变量忘记配置

    Python安装没有勾选配置环境变量安装 解决方法一: 于是,便用安装包卸载后重新安装. 重新安装勾选 安装成功 方法二: 配置环境变量 A.右键点击“我的电脑”,点击“属性”: B.在弹出的界面中点 ...

  8. [暴力枚举]Codeforces Vanya and Label

    Vanya and Label time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  9. vscode vue 格式化 ESLint 检查 单引号 双引号 函数括号报错问题

    vscode vue 格式化 最近重新搞了下电脑,重装了 vscode 软件,在用 vue 写项目的时候,照例开启了 ESLint 语法检查,但是发现在使用 vscode 格式化快捷键的时候(shif ...

  10. 记录一个不同的流媒体网站实现方法,和用Python爬虫爬它的坑

    今天找到一片电影,想把它下载下来. 先开Networks工具分析一下: 初步分析发现,视频加载时会拉取TS格式的文件,推测这是一个m3u8的索引,记录着几百段TS文件,这样方便快进时加载. 但是实际分 ...