在 Windows 7 上手动搭建 Apache 2.4 + mod_wsgi + Falsk 运行环境

在本地已经搭建了 WAMP 环境,但最近想部署一个 Flask 项目到 Apache 服务器上,搭建开发环境时遇到了不少问题,现整理一下流程。

1. 环境:

Windows 7
Apache 2.4
Python 3.7
Flask 1.0.2
mod_wsgi

2. Apache

使用 mod_wsgi 建议 Apache 2.4 以上版本

下载地址: http://httpd.apache.org/download.cgi

由于 Apache 本身不提供二进制版本,仅提供源代码,所以点击 “Files for Microsoft Windows” 进入官方推荐的下载地址:

在这里选择 Apache Lounge:https://www.apachelounge.com/download/

根据自己的环境下载对应的版本,像我的是 64位 和 Windows® Visual Studio C++ 2015(V14),选择 Apache 2.4.34 Win32(选择 32 位而不是 64 位版本,是因为后面安装 mod_wsgi 出现问题,这里不详述):

httpd-2.4.34-win32-VC14.zip(https://home.apache.org/~steffenal/VC14/binaries/httpd-2.4.34-win32-VC14.zip)

解压下载文件 (httpd-2.4.34-win32-VC14.zip) 到指定的目录。解压后会有一个类似于 ReadMe.txt 的文件, 按说明一步一步操作就可以了,大致如下:

1) 修改 conf/httpd.conf 文件

Define SRVROOT "c:/Apache24"

修改 SRVROOT 安装目录为:

Define SRVROOT "D:/LAMP/Apache24" # 这里是我指定的解压目录

2) 用管理员身份打开 Windows 命令窗口 并 cd 到 /Apace24/bin 目录下执行命令:

httpd.exe

3) 打开浏览器访问:http://localhost/ ,显示 It works! 便是安装成功了

4) 在系统服务中添加 apache 的服务,执行:

httpd.exe -k install

5) ApacheMonitor

进入 bin 目录,双击ApacheMonitor.exe

3. mod_wsgi

这一步走了不少弯路,在一些 Python 书籍和文章对于 Python web 环境(Apache)都提及 mod_wsgi.so 模块,所以一直向这方向走,结果没找到匹配的版本(新版mod_wsgi 没提供 windows 版本,又或者 mod_wsgi 对应的 Python 版本太低)。

下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

根据 Python 版本和位数选择对应的版本,我这里选择 mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win32.whl

ap24vc14: apache 2.4 V14

cp37-cp37m: python 3.7 版本

使用 pip 安装 mod_wsgi:

pip install "mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win32.whl"

安裝完成后在 (Python 目录)\Scripts 下会有 mod_wsgi-express.exe 文件。

4. 配置 Apache

在命令行运行:

mod_wsgi-express module-config

会出现以下的类似结果:

LoadFile "c:/python3/python37.dll"
LoadModule wsgi_module "c:/python3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
WSGIPythonHome "c:/python3"

将输出的信息添加到 conf/httpd.conf 中。

5. 部署 Flask 项目

Flask 安装(略)

1) 在 apache 目录下的 htdocs 创建 website 文件夹。

2) 在 website 目录里新建一个 test.py 文件,输入以下代码:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

3) 建立 wsgi 文件

在 website 目录里新建一个 test.wsgi 文件,输入以下代码:

import sys, os
sys.path.insert(0, os.path.dirname(__file__))

from test import app as application

4) 打开 httpd.conf,输入:

<VirtualHost *:80>
    ServerName localhost
    WSGIScriptAlias /website D:\LAMP\Apache24\htdocs\website\test.wsgi
    <Directory D:\LAMP\Apache24\htdocs\website>
        Order deny,allow
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

更多内容可以查阅 Falsk 官网的介绍:http://flask.pocoo.org/docs/1.0/deploying/mod_wsgi/

6. 重启 Apache 服务

在浏览器中输入 http://localhost/website/ 显示 Hello, World! 表示成功了

发表评论

电子邮件地址不会被公开。 必填项已用*标注