将树莓派变成一个web服务器(2):Nginx+Flask+uWSGI部署全过程

时间:2022-03-12 06:31:11

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,

 将树莓派变成一个web服务器(2):Nginx+Flask+uWSGI部署全过程

*特别注意,使用的是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里面出现了一行信息。

 将树莓派变成一个web服务器(2):Nginx+Flask+uWSGI部署全过程

如果能看到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