将树莓派变成一个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:8000 --module index --callable app --process 4
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