首先,我用的Flask是0.9版本的,uwsgi是1.9.6版,nginx是1.1.19版本。操作系统我用的是ubuntu12.04
1)安装Flask,uwsgi,nginx
Flask:sudo apt-get install python-flask
uwsgi:至于部署方式可以采用,uWSGI,http://projects.unbit.it/downloads/。
- tar zxvf uwsgi-latest.tar.gz
- cd uwsgi-1.2.6
- make
- cp uwsgi /usr/sbin/uwsgi
nginx:sudo apt-get install nginx
也可以源码安装参见:nginx 在ubuntu linux 安装 及配置 ,也可以用 apt-get install nginx-full 安装。
2)创建Flask工程
这里就用最简单的HelloWorld,创建一个工程目录:myapp,里面包含以下文件:
文件名:myapp.py
代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello World'
if __name__ == '__main__':
app.run()
给项目目录配置权限,nginx和uwsgi默认是以www-data用户和组来运行:
chown -R www-data:www-data /var/virenvs/myenv/myproject
chmod -R 775 /var/virenvs/myenv/myproject
创建uwsgi配置文件
3)配置 uwsgi
在刚才创建的myapp目录下创建一个uwsgi的xml配置文件myapp_config.xml:
<uwsgi>
<pythonpath>[你的工程的根目录]</pythonpath>
<module>[模块名,这里用myapp]</module>
<callable>[因为app是启动整个服务的入口,所以是app]</callable>
<socket>0.0.0.0:8000</socket> #注: 指定某个固定端口
<master/>
<processes>4</processes> #注:跑几个进程,这里用4个进程
<memory-report/>
</uwsgi>
4)配置 nginx
在/etc/nginx/sites-available/目录下,创建一个站点文件:site
server {
listen 80;
server_name www.myapp.com;
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000; #注:这里的端口8000和uwsgi的里配的是同一个端口,因为nginx和uwsgi需要通过这个端口进行交互
}
}
然后用Linux的ln命令创建一个link到/etc/nginx/sites-enable/里,link的名字也叫site,删除sites-enable目录下的default的link,(很重要).
注意 需要在nginx.conf 的http{ },下包含我们的配置,形式如下:
http {
...
include /etc/nginx/sites-enable/*;
}
启动服务nginx: sudo nginx -s reload
5)开始部署
启动uwsgi,命令是 sudo uwsgi -x myapp_config.xml
,会打出很多的字,如果没有加载工程成功可以从打出的信息中看出,然后不要关闭该Terminal,新打开一个Terminal,在里面启动nginx:sudo /etc/init.d/nginx start,然后在浏览器里访问localhost就可以看到“Hello World!” !
这个链接中的说明更详细:http://blog.ops.cc/hosting/22935dcc7d57e320.html
sudo uwsgi -x uwsgi_config.xml -d /tmp/uwsgi.logs