1)安装Flask,uwsgi,nginx

sudo apt-get update
sudo apt-get install python-flask #Flask
sudo apt-get install uwsgi uwsgi-plugin-python #uWSGI
sudo apt-get install nginx #Nginx

2)创建Flask工程

这里就用最简单的HelloWorld,

创建一个工程文件夹flasksite,新建文件index.py

代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
return 'Hello World' if __name__ == '__main__': app.run()

3)配置uwsgi

uwsgi配置文件各项说明

<uwsgi>
<pythonpath>[上一步新建的工程文件夹,即文件夹flask的路径]</pythonpath>
<module>[上一步新建的python文件,即模块名为index]</module>
<callable>[因为app是启动整个服务的入口,默认就写app]</callable>
<socket>127.0.0.1:8000</socket> #注:设定套接字
<master/>
<processes>4</processes> #注:跑几个线程,这里用4个线程
<memory-report/>
</uwsgi>

在刚才创建的flasksite目录下创建一个uwsgi的xml配置文件flasksite.xml::

<uwsgi>
<pythonpath>/var/www/flasksite</pythonpath>
<module>index</module>
<callable>app</callable>
<socket>127.0.0.1:8000</socket>
<master/>
<processes>4</processes>
<memory-report/>
</uwsgi>

3)配置nginx

在/etc/nginx/sites-available/目录下,创建一个站点文件配置文件site:

server {

  listen 80;
  server_name localhost;   location / {
    root /var/www/flasksite;
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:8000;
    uwsgi_param UWSGI_CHDIR /var/www/flasksite;
    uwsgi_param UWSGI_SCRIPT index;
    uwsgi_read_timeout 1800;
    uwsgi_send_timeout 300;
    proxy_read_timeout 300;
    error_page 404 @proxy;
}
}

然后用ln命令创建一个link到/etc/nginx/sites-enable/里,link的名字也叫site,删除sites-enable目录下的default的link:

sudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/     # 注意:这个是LN的小写命令

sudo rm /etc/nginx/sites-enabled/default #去除默认站点配置

4)开始部署

1.启动uwsgi

sudo uwsgi_python -x /var/www/flasksite/flasksite.xml

会打出很多的字,如果没有加载工程成功可以从打出的信息中看出,然后不要关闭该Terminal,

*特别注意,使用的是uwsgi_python命令,不是uwsgi

*除了配置XML文件,还可以用命令行部署,如:

sudo uwsgi_python -s 127.0.0.1: --module index --callable app --process 

2.新打开一个Terminal,在里面启动nginx:

sudo /etc/init.d/nginx start

然后在浏览器里访问localhost,helloworld出来了,Terminal里面出现了一行信息。

如果能看到Hell World,说明我们打通的桥梁变成:客户端(浏览器)——服务器(nginx)——socket——uWSGI——python

最后,参考文章:

1.linux下nginx+python+uwsgi部署总结http://www.vimer.cn?p=2274

2.uwsgi 配合django,web.py,flask等 http://projects.unbit.it/uwsgi/wiki/Example

3uwsgi 启动参数:http://uwsgi-docs.readthedocs.org/en/latest/Options.html

将树莓派变成一个web服务器(2):Nginx+Flask+uWSGI部署全过程的更多相关文章

  1. 树莓派变成一个Web服务器: nginx + php + sqlite

    将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...

  2. 树莓派(raspberry pi)学习11: 将树莓派变成一个Web服务器(转)

    将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...

  3. 用C写一个web服务器(二) I/O多路复用之epoll

    .container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...

  4. 十七、创建一个 WEB 服务器(一)

    1.Node.js 创建的第一个应用 var http=require("http") http.createServer(function (req,res) { res.wri ...

  5. 用java写一个web服务器

    一.超文本传输协议 Web服务器和浏览器通过HTTP协议在Internet上发送和接收消息.HTTP协议是一种请求-应答式的协议——客户端发送一个请求,服务器返回该请求的应答.HTTP协议使用可靠的T ...

  6. 【重点突破】——使用Express创建一个web服务器

    一.引言 在自学node.js的过程中有一个非常重要的框架,那就是Express.它是一个基于NodeJs http模块而编写的高层模块,弥补http模块的繁琐和不方便,能够快速开发http服务器.这 ...

  7. C++实现一个web服务器, 弱智版服务器

    监听本地的8888端口, 当在浏览器中访问这个地址的时候, 返回一堆HTML数据, 这种方式返回的数据不稳定,不同浏览器解析不同, 因为我们没有定义返回文件类型: #include <stdli ...

  8. 使用node.js 文档里的方法写一个web服务器

    刚刚看了node.js文档里的一个小例子,就是用 node.js 写一个web服务器的小例子 上代码 (*^▽^*) //helloworld.js// 使用node.js写一个服务器 const h ...

  9. Tomcat源码分析 (一)----- 手写一个web服务器

    作为后端开发人员,在实际的工作中我们会非常高频地使用到web服务器.而tomcat作为web服务器领域中举足轻重的一个web框架,又是不能不学习和了解的. tomcat其实是一个web框架,那么其内部 ...

随机推荐

  1. poj 2007 Scrambled Polygon 极角排序

    /** 极角排序输出,,, 主要atan2(y,x) 容易失精度,,用 bool cmp(point a,point b){ 5 if(cross(a-tmp,b-tmp)>0) 6 retur ...

  2. ASP.NET MVC进阶之路:深入理解依赖注入(DI)和控制反转(IOC)

    0X1 什么是依赖注入 依赖注入(Dependency Injection),是这样一个过程:某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点.在程序运行过程中,客户 ...

  3. python下读取excel文件

    项目中要用到这个,所以记录一下. python下读取excel文件方法多种,用的是普通的xlrd插件,因为它各种版本的excel文件都可读. 首先在https://pypi.python.org/py ...

  4. Qt在Linux环境下应用程序字体模糊的解决方法(先改成使用默认字体,然后使用qtconfig配置)

    这两天一直在用Qt实现一个跨平台的软件.软件之前在Windows上编写的,后来放到里Ubuntu 10.10下编译.程序运行时遇到一个很棘手的问题,界面文本非常模糊.后来在网上查阅了好几天的资料,经历 ...

  5. poj 1088 滑雪(区间dp+记忆化搜索)

    题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...

  6. makefile 里面 := 和 = 的区别

    此文版权属于作者所有,任何人.媒体或者网站转载.借用都必须征得作者本人同意! 参考:What is the colon equals sign ( := ) in makefiles? Makefil ...

  7. 与一线Linux嵌入式开发project师的对话

    转:与一线Linux嵌入式开发project师的对话 陈project师一直做Linux的嵌入式开发.作为在开发一线的project师.他对非常多问题的看法可能更切合实际需求,于是,通过邮件.就嵌入式 ...

  8. ajax 基础

    <html><head><script type="text/javascript">function showHint(str){var xm ...

  9. 关于Comparable接口的使用

    一.使用Comparable接口进行排序:如何要都某种数据类型或者是自定义的类进行排序必须要实现Comparable jdk定义的基本数据类型和String类型的数据都实现了Comparable.下面 ...

  10. 抄书(B - 二分查找)

    抄书  (二分查找+贪心) 提示:二分查找一般写成非递归形式 时间复杂度:O(logn) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action? ...