• 将树莓派变成一个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

  • 相关阅读:
    软件需求与分析课堂讨论
    Axios
    lodash
    table行拖拽
    js addDays ,addYears
    所在周的第一天
    Inner join case when
    npm 淘宝镜像安装以及安装报错window_nt 6.1.7601 解决
    jsTree
    Bootstrap Multiselect
  • 原文地址:https://www.cnblogs.com/jsben/p/4767937.html
Copyright © 2020-2023  润新知