windows 下用 Apache+wsgi 部署 python+flask 项目


参考

  • 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 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值