Fork me on GitHub
Suzf  Blog

How-to deploy flask web applications use wsgi behind apache

Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎Flask使用BSD授权。 Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。 WSGI Web服务器网关接口Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器Web应用程序框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。 场景再现

CentOS release 6.7 httpd-2.2.15-47.el6.centos.4.x86_64 python-2.7.3

Flask==0.10.1

mod_wsgi-3.2 [ 使用 新的 python 重编译 ]

关于如何升级 WSGI 中 python 版本 请参见本站 How-to Make mod_wsgi use python2.7.3 instead of python2.6.6

创建 Flask 应用程序

#pwd
/var/www/html/test
#ls
hello.py  hello.wsgi

#cat hello.py 
#!/usr/bin/env python

import sys
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello world'

@app.route('/user/<username>')
def show_user_profile(username):
    return 'Welcome %s to access suzf.net' % username


#cat hello.wsgi 
#!/usr/bin/env python

import os
import sys

EXTRA_DIR = os.path.dirname(os.path.realpath(__file__))
if EXTRA_DIR not in sys.path:
    sys.path.append(EXTRA_DIR)

#sys.path.insert(0, '/var/www/html/test')
from hello import app 
application = app

if __name__ == '__main__':
    app.run()

Apache 配置更新 & 重载进程

#cat /etc/httpd/conf.d/test.conf
WSGIScriptAlias /test /var/www/html/test/hello.wsgi
WSGIPythonHome /usr/local
WSGIScriptReloading On
 
<Directory /var/www/html/test>
    Order deny,allow
    Allow from all
</Directory>

然后 elinks 访问 http://{FQDN}/test || http://{FQDN}//user/username 20160621140433 20160621140538 可以看到  Flask  已经跑起来了 ~~~

相关文档

How To Deploy Flask Web Applications Using uWSGI Behind Nginx on CentOS 6.4

another-pythonmercurialmod_wsgi-on-centos-howto-12

CentOS下Apache+Python+Django+Wsgi环境搭建

mod-wsg-getting-started