Windows下Flask+Apache+mod_wsgi部署Flask项目
想在Windows上部署Flask。参照了网上好多教程,终于配好了。
必要条件:
1: python环境
2:apache服务器
3:mod_wsgi
下面是我的机子的环境:
python:python3.6.
apache服务器:
这里有好多坑:我一直部署不成功,感觉跟我下载的版本有关:但是我也不清楚哪里有问题。
1:下载apache:https://www.apachelounge.com/download/VC10/
我是64位 win10系统:
2:解压文件并将解压出的“apache24”放到C盘根目录:
C盘根目录:
如果你不想放在C盘。可以修改配置文件:Apache24\conf\httpd.conf :修改其中的如图所示处:
3:接下来测试一下服务器,看是否能正常运行:打开cmd。 切换到 Apache24\bin 执行httpd.exe,如果能正常运行就是:
可能会出现如下图的警告:AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::842:1c5:da2d:ba3a. Set the 'ServerName' directive globally to suppress this message :这个不影响服务器运行。你可以修改 配置文件:Apache24\conf\httpd.conf 。指明你的ServerName。
4:打开服务器后: 打开浏览器:输入 localhost :可以看到:it work! 你就成功了。
二:接下来把 mod_wsgi 添加到apache 服务器中:
1:下载 mod_wsgi: 地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
这里 也有我疑惑的地方。我下载的 apache 是vc10的版本。但是我在配置时,我下载的 mod_wsgi 是VC14的版本,竟然最后成功了:根据自己的下载响应的版本。并将whl 中 的 mod_wsgi.pyd 提取出来。
2:将提取出来的文件放到 Apache24\modules 中:
3:修改配置文件 Apache24\conf\httpd.conf :新增:
LoadModule wsgi_module modules/mod_wsgi.pyd
4:到了激动人心的时刻了。重启一下apache服务器,看是否有报错。如果没有 ,说明成功了。
这里 我碰到的问题就是。我使用 mod_wsgi-4.5.24+ap24vc10-cp34-cp34m-win_amd64.whl 提取出来的mod_wsgi 无法启动服务:但是可以使用 mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl 提取出来的尽然可以成功运行服务器。 可能这个要求的python版本比较严格,对CV的版本不是很严格??我也是测试出来的。
三:接下来就是 部署Flask :
1:首先写一个最简单的Flask 应用,并进行发布:这里在跟 apache24 同一目录下也就是 C盘根目录下:创建mydir目录。在目录中写两个文件:hello.py 和myapp.wsgi:
hello.py:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!终于成功了。我擦"
if __name__ == '__main__':
app.run()
myapp.wsgi:
import sys
sys.path.insert(0, 'c:\\mydir')
from hello import app as application
这里的 application 必须是这个。服务器只看这个。
2:修改配置文件:Apache24\conf\httpd.conf 新增几行:
<VirtualHost *:80>
WSGIScriptAlias /myapp c:\mydir\myapp.wsgi
<Directory c:\mydir>
Require all granted
</Directory>
</VirtualHost>
3:到此。所有配置已 填写完毕。
启动服务器。输入 http://localhost/myapp 即可看到自定义的页面。
.
推荐阅读