您的位置:首页 > 运维架构 > Nginx

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

2015-08-28 21:31 781 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: