将树莓派变成一个web服务器(2):Nginx+Flask+uWSGI部署全过程
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部署全过程的更多相关文章
- 树莓派变成一个Web服务器: nginx + php + sqlite
将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...
- 树莓派(raspberry pi)学习11: 将树莓派变成一个Web服务器(转)
将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...
- 用C写一个web服务器(二) I/O多路复用之epoll
.container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...
- 十七、创建一个 WEB 服务器(一)
1.Node.js 创建的第一个应用 var http=require("http") http.createServer(function (req,res) { res.wri ...
- 用java写一个web服务器
一.超文本传输协议 Web服务器和浏览器通过HTTP协议在Internet上发送和接收消息.HTTP协议是一种请求-应答式的协议——客户端发送一个请求,服务器返回该请求的应答.HTTP协议使用可靠的T ...
- 【重点突破】——使用Express创建一个web服务器
一.引言 在自学node.js的过程中有一个非常重要的框架,那就是Express.它是一个基于NodeJs http模块而编写的高层模块,弥补http模块的繁琐和不方便,能够快速开发http服务器.这 ...
- C++实现一个web服务器, 弱智版服务器
监听本地的8888端口, 当在浏览器中访问这个地址的时候, 返回一堆HTML数据, 这种方式返回的数据不稳定,不同浏览器解析不同, 因为我们没有定义返回文件类型: #include <stdli ...
- 使用node.js 文档里的方法写一个web服务器
刚刚看了node.js文档里的一个小例子,就是用 node.js 写一个web服务器的小例子 上代码 (*^▽^*) //helloworld.js// 使用node.js写一个服务器 const h ...
- Tomcat源码分析 (一)----- 手写一个web服务器
作为后端开发人员,在实际的工作中我们会非常高频地使用到web服务器.而tomcat作为web服务器领域中举足轻重的一个web框架,又是不能不学习和了解的. tomcat其实是一个web框架,那么其内部 ...
随机推荐
- Optimistic and Pessimistic locking
悲观锁 悲观锁是指假设并发更新冲突会发生,所以不管冲突是否真的发生,都会使用锁机制. 悲观锁会完成以下功能:锁住读取的记录,防止其它事务读取和更新这些记录.其它事务会一直阻塞,直到这个事务结束. 悲观 ...
- golang并发编程
golang并发编程 引子 golang提供了goroutine快速实现并发编程,在实际环境中,如果goroutine中的代码要消耗大量资源时(CPU.内存.带宽等),我们就需要对程序限速,以防止go ...
- perl5 第十章 格式化输出
第十章 格式化输出 by flamephoenix 一.定义打印格式二.显示打印格式三.在打印格式中显示值 1.通用的打印格式 2.格式和局域变量 3.选择值域格式 4.输出值域字符四.输出到 ...
- HDU 2108 Shape of HDU
题解:按照输入顺序依次将点连接起来,对于连续的三个点p0,p1,p2,令向量a=p1-p0,b=p2-p1 若是凸多边形,那么b相对于a一定是向逆时针方向旋转的 判断两向量的旋转方向,可以使用向量的叉 ...
- HDU 3466 Proud Merchants
题目大意:现在给出商品,有三个参数,记为pi,qi,vi,vi是商品的在你心里价值,pi是商品的价格,qi是你要买商品的时候至少需要的钱然后求可得的最大价值. 单词积累:Merchants 商人 t ...
- Spring 面试复习
1 singleton 和 prototype singleton作用域:当把一个Bean定义设置为singleton作用域是,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对 ...
- VC++6.0中各种文件的作用
VC++ 6.0是一款很经典的C/C++开发工具,虽然是1998年的东西了,但是现在使用依然很广!在用它开发的时候,会发现在建立的工程的文件夹里面,有很多文件,各种后缀名.在这里呢,我主要说一下各个文 ...
- hadoop学习;安装jdk,workstation虚拟机v2v迁移;虚拟机之间和跨物理机之间ping网络通信;virtualbox的centos中关闭防火墙和检查服务启动
JDK 在Ubuntu下的安装 与 环境变量的配置 前期准备工作: 找到 JDK 和 配置TXT文件 并拷贝到桌面下 不是目录 而是文件拷贝到桌面下 以下的命令部分就直接复制粘贴就能够了 1.配 ...
- Android Studio导出Jar包
这篇博客将介绍一下如何用Android Studio导出jar包,希望能给大家带来帮助. 首先需要修改build.gradle文件,在Android Studio中会显示多个build.gradle文 ...
- JDK和JRE的差异和区别
来源:http://docs.oracle.com/javase/7/docs/