linux下使用nginx + uWSGI运行flask程序

如果你自己Google过,你可能会发现一个关键字uWSGI,他就是本篇的主角。

名词解释

Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI。
uwsgi与WSGI一样,是一个通信协议。
uWSGI,一个实现了WSGI,uwsgi,http等协议的服务器,与nginx在一个层次。

鉴于国内的一些教程都写成翔了,那老高就赶紧记录分享一下。

ps. 这个教程不限定于flask、web.py、django同样适用。
I. 安装环境

Centos x64
python 2.6

II. 安装uWSGI

pip install uWSGI
III. 安装配置virtualenv

一般我们会用virtualenv配置项目的运行环境

pip install virtualenv

# 假设 ~/app_dir 为你的项目目录
mkdir ~/app_dir && cd ~/app_dir

# 最简单的flask示例
vi hello_world.py

# add

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run('0.0.0.0', 8080)

--------:wq

virtualenv venv

# 激活virtualenv
. venv/bin/activate

#pip install flask qrcode image
pip install flask

# 退出virtualenv
deactivate
IV. 测试运行

项目与运行环境已经准备完毕,我们先用uWSGI现在试试运行项目。

# 激活virtualenv
. venv/bin/activate
python hello_world.py

# 现在访问你的ip:8080试试看
V. nginx配置

这里我们使用http反向代理

vi hello_world.conf

server{
    listen 80;
    location / {
        proxy_pass        http://127.0.0.1:9090;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   Referer http://$host;
    }
}
VI. 运行uWSGI服务器

uwsgi --http-socket 127.0.0.1:9090 --wsgi-file /root/app_dir/hello_world.py --callable app -H /root/app_dir/venv

uwsgi --http :9090 --wsgi-file /root/app_dir/hello_world.py --callable app -H /root/app_dir/venv
以上命令我们使用http运行uWSGI服务器,绑定端口9090,用绝对路径指定了入口文件hello_world.py,并使用-H参数指定virtualenv的地址。

当然,运行uWSGI服务器的方式还有很多种,比如我们可以以配置文件的形式启动,再比如我们还可以使用sock的形式运行,当然相应的nginx反响代理也需要同时修改。

时间: 2024-09-07 00:40:38

linux下使用nginx + uWSGI运行flask程序的相关文章

linux下安装nginx(图文教程)_Linux

Nginx是一款轻量级的Web 服务器.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.以下主要介绍linux下安装nginx. linux系统为Centos 64位 简介 一.Linux安装软件常用方法 1.rpm(或pkg)安装,类似于Windows安装程序,是预编译好的程序.  使用的是通用参数编译,配置参数不是最佳 可控制性不强,比如对程序特定组件的定制性安装 通常安装包间有复杂依赖关系,操作比较复杂 安装简单,出错机率低 2.yum(或ap

linux下resin3.025+apache运行jsp过一段时间后内存和cpu占用过大

问题描述 linux下resin3.025+apache运行10-20个jsp网站,过一段时间后内存和cpu占用过大,然后resin就死掉jsp页面就大不开了,重起resin又恢复正常,然后过一段时间又会出现内存和cpu占用过大.请问是什么原因啊?是jsp网站程序还是resin3.025+apache没设置好? 解决方案 解决方案二:应该是程序的问题吧,你用top命令看看那个进程占用的多.解决方案三:这个应该是你上面部署的网站有问题导致的.我不知道有没有什么管理工具可以看每一个网站占的内存.如果

使用nginx来负载均衡 本文在window与linux下配置nginx实现负载_Linux

实现网站负载有两种办法,一种是购买硬件来实现,比如是硬件F5再到Citrix Netscalar,这些设备都几十万,不是一般人玩的,另一种是使用软件来实现,比如nginx,squid这类有反向代理功能的软件,本文就nginx安装实现负载. 首先是windows系统,这里建议使用window 2003企业版,而不要作用win7(太新了,我遇到无法启动nginx的问题).要说的是,在windows下配置安装nginx还是很容易的,少了 linux下下载tar再配置编译参数等等步骤,我们只要从下面的地

linux下查看nginx、apache、mysql、php的编译参数

下文我们一起来看一个linux下查看nginx.apache.mysql.php的编译参数例子,希望此例子对各位有帮助. 查看nginx.apache.mysql.php参数我们可以用到 /App/nginx/sbin/nginx -V 查看nginx参数 # cat config.nice 查看apache参数 #cat "/usr/local/mysql/bin/mysqlbug"|grep configure 查看mysql参数 /usr/local/php/bin/php -i

Linux 下编译c++ opengl的小程序

问题描述 Linux 下编译c++ opengl的小程序 完整的代码如下 #include <GL/glut.h> #include <cmath> #include <utility> #include <vector> using std::vector; using std::pair; vector<pair<int, int> > my_points(4); vector<pair<int, int> &g

Linux下用Nginx作Perl程序服务器及其中Perl模块的配置_nginx

perl + fastcgi + nginx搭建 nginx + fastcgi是php下最流行的一套环境了,那perl会不会也有fastcgi呢,当然有,今天来搭建下nginx下perl的fastcgi.性能方面也不亚于php,但是现在web程序php的流行程度perl无法比拟了,性能再好也枉然,但是部分小功能可以考虑使用perl的fastcgi来搞定.进入正题.1. 准备软件环境: nginx:http://www.nginx.org perl:系统自带 fastcgi:http://www

Linux下实现基于多线程的echo程序

准备开始写一些Linux 下网络编程以及多线程的blog,就从这个简单的echo程序开始吧. 在echo的服务端使用多线程与客户进行通信,可以实现一个服务端程序同时连接多个客户的功能.那么,到底在服务端要有多少个线程呢? 答案是:1+1+n.一个主线程,一个监听(listen)线程,与n个客户进行通信的n个线程. 服务端代码: #include "../unp.h" #include <pthread.h> void* str_echo(void* argv) { int

Linux下Apache+mysql+PHP运行环境搭建教程

 今天因为工具需要需要配置一个web环境,由于初次接触在linux内核系统中配置Apache+mysql+PHP环境折腾了许久,下面整理了一篇安装教程与大家一起交流一下吧. PHP之服务器环境搭建安装软件准备 1. Apache224.tar.gz 2. php-5.2.9.tar.gz 3. mysql-5.1.54.tar.gz PHP和各个组件包 libxml2-2.6.30.tar.gz xml c语言版的解析器 libmcrypt-2.5.8.tar.gz 加密算法扩展库 zlib-1

linux下安装nginx

linux系统为Centos 64位 第一步:从http://nginx.org/download/上下载相应的版本(或者wget http://nginx.org/download/nginx-1.5.9.tar.gz直接在Linux上用命令下载) 第二步:解压 tar -zxvf nginx-1.5.9.tar.gz  第三步:设置一下配置信息 ./configure --prefix=/usr/local/nginx ,或者不执行此步,直接默认配置 第四步: make 编译 (make的过