参考
-
windows10上使用apache部署python flask项目
https://blog.csdn.net/qq_33279781/article/details/78858620 -
Apache部署flask的一些踩坑记录(win64+python36)
https://blog.csdn.net/cysion1989/article/details/78952958 -
查看端口进程
cmd:NETSTAT -ANO -
重启apache服务
https://jingyan.baidu.com/article/d2b1d102cbd5775c7e37d48e.html
1. 根据 python 版本下载 Apache
-
下载 Apache
下载链接:https://www.apachelounge.com/download/
我选择的是:httpd-2.4.39-win64-VC15.zip -
启动服务器 httpd(httpd.exe)
解压文件夹放到c盘根目录下(可以放到其他目录下,需要更改 conf 对应配置)。cmd 进入目录 Apache24\bin,输入httpd(httpd.exe)启动服务器,打开浏览器访问 http://localhost:8090/ (加上设置的端口,默认80。 httpd.conf 下设置监听的端口 Listen 8090)。显示 It works!证明服务器成功运行。
2. 下载对应版本的 mod_wsgi Python插件
-
下载对应版本的 mod_wsgi Python插件
下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
我选择的是:mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win_amd64.whl -
安装 mod_wsgi
把下载的 .whl 文件复制到 python 安装目录的 python\Scripts 下,然后命令行 pip install “mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win_amd64.whl” 进行安装 -
配置http.conf
---- mod_wsgi安装成功后,在 python\scripts 下 cmd 运行 mod_wsgi-express module-config, 输出以下内容。将输出内容复制到 “C:\Apache24\conf\httpd.conf” 文件下进行配置
---- 或者 cmd 执行 mod_wsgi-express module-config > myconfig.txt 。这里将信息重定向到了Scripts文件夹下的myconfig.txt,打开这个txt文件,将里面的信息复制到 httpd.conf 文件中。
LoadFile “D:\Anaconda3\python37.dll”
LoadModule wsgi_module “D:\Anaconda3\Lib\site-packages\mod_wsgi\server\mod_wsgi.cp37-win_amd64.pyd”
WSGIPythonHome “D:\Anaconda3”
。。。
“C:\Apache24\conf\httpd.conf” 文件下:
3. 测试 test
“D:\test1-chinese-get1\test.py”
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!dfghjkdfghjk'
if __name__ == '__main__':
app.run()
“D:\test1-chinese-get1\test.wsgi” 导入测试模块 test.py,mod_wsgi 要求WSGI 应用的入口叫 “application” 。若要替换为项目所用的 py 文件,只需修改 test.wsgi 中的 ‘from test import app as application’
# 1.直接定义 application
def application(environ, start_response):
status = '200 OK'
output = b'Hello World!'
response_headers = [('Content-type', 'text/plain'),('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
# 2.导入模块
import sys
sys.path.insert(0, 'D:/test1-chinese-get1')
from test import app as application
# from get import app as application
在apache的配置文件conf/httpd.conf里最末行添加:
<VirtualHost *:8090>
WSGIScriptAlias /myapp D:\test1-chinese-get1\test.wsgi
<Directory D:\test1-chinese-get1>
Require all granted
</Directory>
</VirtualHost>
重新运行 httpd.exe,然后访问 http://localhost:8090/myapp ,看到测试内容就 ok 了。