手机版
你好,游客 登录 注册
背景:
阅读新闻

CentOS 6.4下搭建Nginx+uWSGI+Flask运行环境教程

[日期:2014-05-10] 来源:Linux社区  作者:Linux [字体: ]

3、安装flask

前往官网http://flask.pocoo.org/下载flask。

$ wget http://pypi.Python.org/packages/source/F/Flask/Flask-0.9.tar.gz

解压安装

$ tar -zxv -f Flask-0.9.tar.gz

$ cd Flask-0.9

$ sudo python setup.py install

新建flask项目,就一个程序文件app.py,内容如下:

from flask import Flask
app = Flask(__name__)
 
@app.route("/")
def hello():
return "Hello World!"
 
if __name__ == "__main__":
app.run()

确保用flask自带的web服务器能够运行。

4、配置nginx和uwsgi

这个步骤是比较麻烦,但是理解原理后也不难。

uwsgi在nginx 1.2.7是标准模块,所以不需要安装。编辑nginx的配置文件,使其加载uwsgi。

location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
    root  html;
    index  index.html index.htm;
}

修改完成后可以测试下配置文件是否没有错误。

$ sudo /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

配置完成之后,重新启动nginx。先找到nginx主进程编号:

$ ps -ef | grep nginx

笔者电脑上是13367,然后重新启动

$ sudo kill -HUP 13367

在flask的项目下新建一个配置文件app_config.xml,用来设置uwsgi相关的参数,一会uwsgi在启动时需要指明这个配置文件,内容如下:

<uwsgi>
<pythonpath>/home/chenjiebin/web/flaskdemo</pythonpath>
<module>app</module>
<callable>app</callable>
<socket>127.0.0.1:3031</socket>
<master/>
<processes>4</processes>
<memory-report/>
</uwsgi>

其中个参数表示:

  • pythonpath表示项目目录
  • module表示项目启动模块,如上例为app.py,这里就为app
  • callable表示flask项目的实例名称,上例代码中app = Flask(__name__),所以这里为app
  • socket表示和nginx通信的地址和端口,和nginx配置里的uwsgi_pass一致。
  • processes表示开启多少个子进程处理请求。

启动uwsgi:

$ sudo /usr/local/bin/uwsgi -x /home/chenjiebin/web/flaskdemo/app_config.xml

其中-x参数表示加载的配置文件路径。

这时候在浏览器里访问http://localhost,看到输出Hello World!就大功告成了。

小提示:如果需要让uwsgi以守护进程的方式运行,使用-d参数并指明日志路径就可以了。

 $ sudo /usr/local/bin/uwsgi -x /home/chenjiebin/web/flaskdemo/app_config.xml -d /var/log/uwsgi/uwsgi.log

小结

nginx和uwsgi之间的通信这里是使用端口进行通信,也可以使用socket文件。uwsgi的配置也可以使用其他的配置文件,不一定要用xml,这里就不再说明了。有什么一问题可以来信交流。

Nginx 的详细介绍请点这里
Nginx 的下载地址请点这里

更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-05/101529.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款