apache+mod_wsgi+flask 环境搭建

Posted 灬鬼谷灬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache+mod_wsgi+flask 环境搭建相关的知识,希望对你有一定的参考价值。

apache + flask + mod_wsgi

Table of Contents

1 服务器框架 apache mod_wsgi flask

1.1 安装 flask

1.1.1 通过yum或者pip均可以很方便的安装flask

  • 测试flask是否安装成功是通过新建 run.py
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('\\')
    def index():
         return "Hello Flask"
    
    if __name__ == "__main__":
         app.run(host="0.0.0.0")
    
  • 运行 python run.py 通过 localhost:5000 就可以访问,但是不知道问什么远程却访问不了

1.2 安装 mod_wsgi

1.2.1 yum install mod_wsgi(pip install mod_wsgi)

编写配置文件flask.wsgi

import sys
sys.path.insert(0, "/data/web") #工程根目录,即wsgi文件的路径
from run import app as application

1.3 安装 apache

1.3.1 一般说来直接yum install apache 可以安装,这里说的时apache虚拟主机的配置

  • 找到配置文件的目录 /**/conf/httpd.conf,将以下代码注释去掉
    include conf/extra/httpd-vhosts.conf
    
  • 找到conf/extra/httpd-vhosts.conf
    <VirtualHost *:80>
      ServerName example.com 
      WSGIScriptAlias / /data/web/flask.wsgi
    <Directory /data/web>
      Require all granted
      Require host ip
      Allow from all
    </Directory>
    </VirtualHost>
    

1.3.2 使用命令 locate mod_wsgi,找到mod_wsgi**.so文件,把它copy到apache的modules文件夹下

  • 找到配置文件的目录 /**/conf/httpd.conf,添加以下代码
    LoadModule wsgi_module modules/mode_wsgi**.so
    

1.4 一般来说,通过以上配置访问服务器ip地址,就可以看到Hello Flask

2 为了方便工程管理,在这将工程整理成如下的结构

假如我们的工程目录为 /data/web

+ 根目录 /data/web
  + flask.wsgi
  + app/
    + __init__.py
    + views.py
    + static/
      + css/
      + js/
      + images/
    + templates/
      + index.html
      + base.html

2.1 flask.wsgi 代码

import sys
sys.path.insert(0, "/data/web") #工程根目录,即wsgi文件的路径
from app import app as application

2.2 __init__.py 代码

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

if __name__ == "__main__":
     app.run(host="0.0.0.0")

2.3 views.py 代码

from app import app
@app.route('\\')
def index():
   return "Hello Flask"

2.4 以上为一个工程的基本结构

  apache+flask+mod_wsgi 关于python logging日志使用
  当在python中使用日志模块时,会出现错误的现象:permission denied的问题,  其实归根结底是一个权限的问题,只需要给err.log的添加用户权限即可
  apache 默认的用户组和用户为 daemon:daemon,
  使用 chown +R daemon:daemon err.log

以上是关于apache+mod_wsgi+flask 环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

如何部署Apache2+mod_wsgi+flask?

Flask、mod_wsgi 和 Apache:ImportError

如何在 Apache 和 mod_wsgi 中使用 Flask 路由?

初始化使用 Apache 和 mod_wsgi 运行的 Flask 应用程序

在 linux 中使用 apache 和 mod_wsgi 配置 Python flask 应用程序

使用 mod_wsgi 和 WinSCP 在 Apache 服务器上部署 Flask 应用程序