python部署-Flask+uwsgi+Nginx

一、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就用socketsocket=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;

}

    }

原文地址:https://www.cnblogs.com/Se7eN-HOU/p/12674522.html

时间: 2024-07-31 17:32:40

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

树莓派部署Flask+uWSGI+Nginx过程

转载来自http://blackgu.blogbus.com/logs/171363164.html略作修改 1)安装Flask,uwsgi,nginx Flask:sudo apt-get install python-flask uwsgi:sudo apt-get install uwsgi uwsgi-plugin-python nginx:sudo apt-get install nginx 2)创建Flask工程 这里就用最简单的HelloWorld,创建一个工程目录:myapp,里

Flask+uwsgi+Nginx+Ubuntu部署

学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Python选择的是2.7.2这个是Ubuntu系统自带的学起来感觉还是简单的 不用去软连,目前自己的flask是python3写的 ,慢慢去过渡,先吧这个给搞通了,那么在优化也是很顺手的.其实对于很多的原理自己也是一知半解,先吧这个给搭起来,慢慢去了解里面的逻辑什么的. Nginx Nginx 是高效的

Flask+uwsgi+Nginx+Ubuntu部署教程

学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的过程就会重复一次.不知道多少人的膝盖中箭了呢?我也这样干过,这么做确实很蠢,所以我决定写一篇 Flask+uwsgi+Nginx+Ubuntu 的部署教程,解答一些我自己在这个过程中的疑问,从原理到方案,以一个小白的角度,总结一下部署.运维这件事,应该对初学 Flask 需要部署的同学有些帮助. 环

用Docker部署Django+uWSGI+Nginx

用Docker部署Django+uWSGI+Nginx 大致步骤如下: 创建Centos容器 安装Python及pip 安装MySQL 使Django连接到MySQL 运行uWSGI服务器 运行Nginx服务器 ? ? 创建Centos容器 安装docker软件 yum install docker 创建一个centos容器 docker run -d --name deploy1 --network host centos tail -f /dev/null -d:让它在后台运行. –name

【Flask】flask+uwsgi+nginx环境部署

在centos上,部署flask框架的环境,我选择了uwsgi和nginx 具体步骤为: 配置nginx+uwsgi 安装nginx  nginx/1.12.2安装Flask  0.10.1安装uwsgi  2.0.16(64bit)安装uwsgi-plugin-python 2.0.16 创建一个flask项目 1 #!/usr/bin/python 2 # coding=utf-8 3 4 from flask import Flask 5 import sys 6 reload(sys)

Flask+uwsgi+Nginx环境搭建

开源软件准备需要的软件列表:setuptools-33.1.1.zipPython-2.7.13.tgzpip-9.0.1.tar.gznginx-1.10.3.tar.gz软件统一上传到/usr/local/src/下,python是使用自己编译的. Python安装 先安装以下的软件(如果有的话,就可以不安装了,例如使用rpm -qa zlib-devel先查看下)yum install zlib-devel -yyum install openssl-devel -y tar -zxvf解

[linux]centos7.4部署django+Uwsgi+Nginx

前言:我已经写了几个接口用来部署在服务器上的,首先选择django+Uwsgi+Nginx因为配置简单,比较符合python的简单操作功能强大的特点 然后对于django的一些版本在之前的文章写了 参考:https://www.cnblogs.com/Jack-cx/p/9351633.html  根据版本,服务器pip3 install xxx 安装下 我的django项目大概结构: TestWebApi ----TestWebApi ----Apiso(创建的应用) ----manage.p

Flask uwsgi nginx:504 Gateway Time out

uwsgi+nginx部署的web站点运行时可能产生504 Gateway Time out这样的错误,究其原因是因为相关参数设置的不当. nginx和uwsgi整合时有三个参数可以用于设置超时时间,在nginx配置文件http->server->location中设置. uwsgi_connect_timeout:默认60秒,与uwsgi-server连接的超时时间,该值不能超过75秒.若在超时时间内未能成功连接则断开连接尝试.uwsgi_read_timeout:默认60秒,nginx等待

Centos 7 下部署Django + uWSGI + Nginx

1.废话 之前利用Django写了些测试工具,一直是直接 python manage.py runserver 8081这么来用的.用户量不大,倒也不影响什么.uWSGI+Nginx的性能肯定要好,so 研究了一下 2.环境: Python: 3.5 Django: 1.8 OS: CentOS 7 x86_64 uwsgi: 2.0.17 3.安装Python3.5 不要删除自带的python2.7,否则会出问题,因为centos许多软件需要依赖系统自带python 安装依赖工具 yum in