将树莓派变成一个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框架,那么其内部 ...
随机推荐
- Zencart先生成订单后付款,类似淘宝后台修改订单价格
Zencart 使用 Paypal 付款,会出现漏单的情况,即 paypal 已经收到客户的付款,但是网站后台没有客户的订单.导致 paypal 漏单的原因大致会是当客户跳转到Paypal 网站付款完 ...
- The process "E:\Qt\4.8.5\bin\qmake.exe" exited with code 2.(不能包含中文路径,qmake够弱智的)
打开某个项目的时候,编译出现类似的错误 21:46:44: The process "E:\Qt\4.8.5\bin\qmake.exe" exited with code 2. ...
- activemq在windows下启动报错,闪退问题
查验了网上各种方法,都没搞定,最后楼主决定按照linux的解决套路来,把windows计算机名称改为纯英文字母,原计算机名:lee_pc,修改后为leepc,然后重启电脑,再重新运行activemq. ...
- 脑波设备mindwave介绍
脑波,又称之为脑电波,是人大脑发出的电波,非常的微弱,只能通过设备来检测. 人的脑波在不同状态下,会不同,因此可以通过脑波来量化分析人的精神状态. 科学家讲脑电波分为四种,以下为详细解释(摘自百度百科 ...
- centos 安装 erlang
1.首先下载erlang 安装源文件 可以在官网上下载 : http://www.erlang.org/ 官网上提供多个版本: 2.下载完成后将R16B01 Source File对应的 ot ...
- python下线程以及锁
1.python多线程 #encoding=utf-8 """ python多线程,并非真正意义上的多线程 全局锁:在指定时间里,有且只有一个线程在运行 "&q ...
- String的几种比较方法对比(Compare,CompareTo, CompareOrdinal、Equals)
String类字符串比较大概有4种方法:Compare(),CompareTo(), CompareOrdinal()和Equals(). Compare()方法是CompareTo()的静态版本.而 ...
- Js 返回页面 or 跳转页面
跳出 iframe 在当前页跳转, window.parent.frames.location.href=www.baidu.com" 跳转页面 onclick="history. ...
- TreeView控件绑定数据库
1.在设计视图里面的代码 <form id="form1" runat="server"> <div> <h1>两个表< ...
- 数据库基础(子查询练习、链接查询(join on 、union)及其练习)
子查询练习一:查询销售部里的年龄大于35岁的人的所有信息 练习二:将haha表中部门的所有数字代码转换为bumen表中的字符串显示 练习三:将haha表中部门的所有数字代码转换为bumen表中的字符串 ...