用uWSGI和Nginx部署Flask项目的方法示例
概况
在开发过程中,我们一般直接用Python命令直接运行Flask程序。这样的运行只适合我们开发,方便我们调试。一旦程序部署到线上,这样运行的Flask程序性能会比较低。可以采用uWSGI+Nginx进行部署。
uWSGI
在部署之前,我们得先了解几个概念
- wsgi web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。
- uwsgi 是一种传输协议,用于定义传输信息的类型。
- uWSGI 是实现了uwsgi协议WSGI的web服务器。
部署
首先准备一个flask程序,名字run.py
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return '部署' if __name__ == '__main__': app.run()
安装uWSGI
pip install uwsgi
在项目的目录创建一个uwsgi的配置文件
[uwsgi] #配合nginx使用 socket = 127.0.0.1:8000 #项目路径 /Users/xiaoyuan/Desktop/flask_test chdir = 自己项目路径 #wsgi文件 run就是flask启动文件去掉后缀名 app是run.py里面的Flask对象 module = run:app #指定工作进程 processes = 4 #主进程 master = true #每个工作进程有2个线程 threads = 2 #指的后台启动 日志输出的地方 daemonize = uwsgi.log #保存主进程的进程号 pidfile = uwsgi.pid #虚拟环境环境路径 virtualenv = /Users/xiaoyuan/.virtualenvs/flask_test
然后配置Nginx,找到Nginx的配置文件nginx.conf,在http块下加上下面代码
server { # 监听端口 listen 80; # 监听ip 换成服务器公网IP server_name 127.0.0.1; #动态请求 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } #静态请求 location /static { alias /Users/xiaoyuan/Desktop/flask_test/static; } }
启动
启动uWSGI
uwsgi --ini uwsgi.ini
启动Nginx
/etc/init.d/nginx start
然后访问Nginx监听的IP,由于我在本地部署,就直接访问http://127.0.0.1:80/
其他命令
uwsgi重启
uwsgi --reload uwsgi.pid
uwsgi停止
uwsgi --stop uwsgi.pid
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
详解Django+uwsgi+Nginx上线最佳实战
什么是uwsgi? uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换.WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范. WSGI是一种通信协议. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信.uwsgi协议是一个uWSGI服务器自有的协议,
-
详解Django+Uwsgi+Nginx的生产环境部署
使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: 1.确保有一个能够用runserver正常启动的django项目 2.项目已上传到linux 3.linux上已部署好python环境,且已安装好项目所需的模块 安装uwsgi uwsgi是python的一个模块,安装u
-
Django + Uwsgi + Nginx 实现生产环境部署的方法
如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. 1.WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架
-
uwsgi+nginx部署Django项目操作示例
本文实例讲述了uwsgi+nginx部署Django项目操作.分享给大家供大家参考,具体如下: uWSGI概述 uWSGI 是一个全功能的 HTTP 服务器,可以把 HTTP 协议转化成语言支持的网络协议. 安装uwsgi 使用pip安装即可 pip install uwsgi 安装完成后可测试 #vim test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/ht
-
详解python使用Nginx和uWSGI来运行Python应用
uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能.它支持WSGI协议,同时它也支持自有的uWSGI协议,该协议据说性能非常高,而且内存占用率低,为mod_wsgi的一半左右,我没有实测过.它还支持多应用的管理及应用的性能监控.虽然uWSGI本身就可以直接用来当Web服务器,但一般建议将其作为应用服务器配合Nginx一起使用,这样可以更好的发挥Nginx在Web端的强大功能.本文我们就来介绍如何搭建uWSGI+Ngnix环境来运行Python应用. 安装uWSGI
-
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件,压缩为zip包 3.准备软件 1.xshell(用于远程操作服务器)2.FileZilla(用于从客户端将项目包上传到服务器)3.Navicat 12 (用于同步数据库) 4.环境云 服务器/云主机:京东云 (云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,各种
-
解决nginx+uwsgi部署Django的所有问题(小结)
最近,自己暑假写的小项目也算完毕了,想着投放到自己云服务器上,本来以为只要打开端口运行python3 manager runserver 0.0.0.0:80就搞定了,最后才知道这只适用于Django的开发模式,只支持单用户访问,既然如此,那么就得需要web服务器进行部署了.我便使用了nginx nginx? 为什么是nginx? 首先我觉得它小,很轻量级,用着简便,没有apache那么庞杂,并且网上都推荐nginx部署Django. 安装 这里直接略过,说一点Linux用户推荐大家源码安装,因
-
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
前言 自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路. 方法如下 安装Nginx: #安装nginx sudo apt-get install nginx #一些有用的命令 #启动nginx sudo /etc/init.d/nginx start #重启nginx 8sudo /etc/init.d/nginx restart #停止nginx sudo /etc/ini
-
详解使用Nginx和uWSGI配置Python的web项目的方法
基于python的web项目,常见的部署方法有: fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动. wsgi:利用http服务的mod_wsgi模块来跑各个project. 不过还有个uwsgi,它既不用wsgi协议也不用fcgi协议,而是自创了一个uwsgi的协议,据作者说该协议大约是fcgi协议的10倍那么快.uWSGI的主要特点如下: 超快的性能. 低内存占用(实测为apache2的mod_wsgi的一半左右). 多app管理
-
用uWSGI和Nginx部署Flask项目的方法示例
概况 在开发过程中,我们一般直接用Python命令直接运行Flask程序.这样的运行只适合我们开发,方便我们调试.一旦程序部署到线上,这样运行的Flask程序性能会比较低.可以采用uWSGI+Nginx进行部署. uWSGI 在部署之前,我们得先了解几个概念 wsgi web应用程序之间的接口.它的作用就像是桥梁,连接在web服务器和web应用框架之间. uwsgi 是一种传输协议,用于定义传输信息的类型. uWSGI 是实现了uwsgi协议WSGI的web服务器. 部署 首先准备一个flask
-
使用PM2+nginx部署python项目的方法示例
之前面我们使用uwsgi部署项目比较繁琐,本章节介绍使用pm2+nginx一键部署django项目 PM2的主要特性: 内建负载均衡(使用Node cluster 集群模块) 后台运行 0秒停机重载,我理解大概意思是维护升级的时候不需要停机. 具有Ubuntu和CentOS 的启动脚本 停止不稳定的进程(避免无限循环) 控制台检测 提供 HTTP API 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 ) 一.安装PM2 1.安装nodejs sudo apt-g
-
Docker镜像+nginx 部署 vue 项目的方法
一.打包vue项目 在开发完的vue项目输入如下命名,打包生成dist文件夹 yarn build / npm run build 此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西. 如果将该dist目录整个传到服务器上,部署成静态资源站点就能直接访问到该项目. 二.获取nginx 镜像 nginx 是一个高性能的HTTP和反向代理服务器,此处我们选用 nginx 镜像作为基础来构建我们的vue应用镜像. 在终端输入: docker pull nginx 即可以获取到ngin
-
Docker 部署Django项目的方法示例
使用docker部署django项目也很简单,挺不错,分享下 环境 默认你已安装好docker环境 django项目大概结构 (p3s) [root@opsweb]# tree opsweb opsweb ├── apps ├── logs ├── manage.py ├── media ├── opsweb ├── README.md ├── requirements.txt └── static 编写Dockerfile 这里指定 Python 版本为docker官方提供的 "0.0.0.0
-
CentOS 部署 flask项目的方法
最近在学习 python,使用 flask 实现了个个人博客程序,完了想部署到服务器上.因为是新手,一路磕磕绊绊最终把它基本搞定.网上资料对新手感觉都不太友好,都是零零碎碎的,所以我整理了一下,一方面作为我自己的记录,方便以后查阅,另一方面也希望能帮助到跟我一样的新手. 前提 有一个服务器(不然搞毛),购买可以参考优质国外vps推荐 有个人域名(当然,你可以直接使用 IP访问,但有点奇怪不是?购买域名可以去GoDaddy 1.安装git 可以选择 github 或者Bitbucket,当然你也可
-
Forever+nginx部署Node站点的方法示例
最近入手了一款最便宜的腾讯云服务器,主要用来部署自己的个人博客以及学习一些liunx知识,从而全方面了解掌握web技术.强烈建议前端人员拥有一个属于自己的服务器.在写此文章之前,我的云服务器已经安装好Mysql以及node, nginx等.下面以部署node网站为例,讲解几个常见的场景 线程持久运行 一般来说,我们在window cmd上通过node index.js启动一个服务器,只要不关闭,就可以一直访问和调用接口.但是在linux上往往如果长时间不操作或者你要执行其他操作时候,你的node
-
nginx 部署 vue 项目找不到js css文件的解决方法
很多时候 npm run build 之后, index.html 文件中webpack 自动插入的 js 文件 css 文件的相对目录总是不对,发布到服务器上之后,nginx 找不到文件. vue-cli@3 在 vue-cli@3 中你需要为你 webpack 插入到 index.html 中 的所有文件添加一个 baseUrl. 你需要在项目的根目录新建一个 vue.config.js, 添加如下内容: ... module.exports = { baseUrl: isProd ? '/
-
服务器使用Nginx部署Springboot项目的详细教程(jar包)
1,将java项目打成jar包 这里我用到的是maven工具 这里有两个项目,打包完成后一个为demo.jar,另一个为jst.jar 2.准备工具 1.服务器 2.域名(注:经过备案) 3.Xshell用于连接服务器 4.WinScp(注:视图工具,用于传输jar) 3.将jar包传入服务器 直接拖动即可 3.使用Xshell运行jar包 注:(服务器的java环境以及maven环境,各位请自行配置,这里不做描述.) cd到jar包路径下执行:nohup java -jar demo.jar
-
nginx部署多个vue项目的方法示例
上一篇已经介绍了然后配置web项目:今天由于公司需求,需要在同一域名端口下,部署两个项目:今天花了一上午终于弄好了,选择赶紧做一个笔记. 如何连接阿里云服务器就不在这里说了,请看我以前的文章. 首先需要的效果 http://47.97.244.83/login http://47.97.244.83/student/login 文件目录 两个项目并列在同一文件夹内. 准备好两个vue的项目 http://47.97.244.83/login:这个不用修改配置直接build就可以.关键是二级域名的
随机推荐
- 解析Go语言编程中的struct结构
- 简单实体类和xml文件的相互转换方法
- js与jquery回车提交的方法
- 谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
- JSP显示中文问题的解决方案
- 用JavaScript实现对话框的教程
- Js nodeType 属性全面解析
- gridview生成时如何去掉style属性中的border-collapse
- 转载:On having layout
- JavaScript中的object转换函数toString()与valueOf()介绍
- JavaWeb中Struts2拦截器深入分析(一)
- jQuery实现Email邮箱地址自动补全功能代码
- 详解Jquery 遍历数组之$().each方法与$.each()方法介绍
- js 设置选中行的样式的实现代码
- javascript Array.prototype.slice的使用示例
- centos7安装nginx的两种方法介绍
- 来自西部数码的WEB服务器安全设置
- C#在DataTable中根据条件删除某一行的实现方法
- Android结束进程的方法详解
- java编程求二叉树最大路径问题代码分析