日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Apache24 + wsgi + Flask on Python3.8部署实践

發布時間:2025/5/22 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache24 + wsgi + Flask on Python3.8部署实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 安裝Apache2.4

Apache官網沒有Windows安裝包,只有源碼需要自己編,可以下載ApacheHaus編譯版
點此處下載:httpd-2.4.46-o111j-x64-vc15.zip

解壓到本地目錄E:\GreenSoftware\Apache24
編輯Apache的配置文件:Apache24/conf/httpd.conf

Define SRVROOT "/Apache24"

改為

Define SRVROOT "E:\GreenSoftware\Apache24"

至此可以通過命令/Apache24/bin/httpd.exe啟動Apache,然后在瀏覽器中可以看到Apache的歡迎頁面。

如果出現錯誤,可以檢查標準輸出或者/Apache24/logs/error.log
常見的錯誤原因可能是端口號80(或443)被別的進程占用。用命令
netstat -ano|findstr 80
netstat -ano|findstr 443
將對應的進程停掉,然后重啟httpd.exe即可。

2. 安裝Python-3.8.5

從官網找到python-3.8.5-amd64.exe
點此處下載:https://www.python.org/downloads/windows/

3. 安裝mod_wsgi-4.7.1-cp38-cp38-win_amd64.whl

Apache HTTP服務器的mod_wsgi擴展模塊,實現了Python WSGI標準,可以支持任何兼容Python WSGI標準的Python應用,當然也包括了Flask。
點此處下載:mod_wsgi-4.7.1-cp38-cp38-win_amd64.whl

把下載的.whl文件復制到python38\Scripts下,然后使用pip進行安裝

D:\Python38\Scripts>pip install mod_wsgi-4.7.1-cp38-cp38-win_amd64.whl Processing d:\python38\scripts\mod_wsgi-4.7.1-cp38-cp38-win_amd64.whl Installing collected packages: mod-wsgi Successfully installed mod-wsgi-4.7.1 WARNING: You are using pip version 20.3.1; however, version 21.0.1 is available. You should consider upgrading via the 'd:\python38\python.exe -m pip install --upgrade pip' command.

安裝成功后在python38\Scripts下運行

D:\Python38\Scripts>mod_wsgi-express module-config LoadFile "d:/python38/python38.dll" LoadModule wsgi_module "d:/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd" WSGIPythonHome "d:/python38"

將安裝后生成的文件mod_wsgi.cp38-win_amd64.pyd移動到Apache的modules目錄下
E:\GreenSoftware\Apache24\modules\mod_wsgi.cp38-win_amd64.pyd

編輯Apache的配置文件:Apache24/conf/httpd.conf
增加模塊引入:

LoadModule wsgi_module modules/mod_wsgi.cp38-win_amd64.pyd

去掉模塊mod_vhost_alias.so前的注釋

LoadModule vhost_alias_module modules/mod_vhost_alias.so
4. 創建Flask項目

目錄結構

文件hello.py

from flask import Flask app = Flask(__name__)@app.route('/') def root():return '<h1>網站建設中</h1>'@app.route('/hello') def hello():return '<h1>Hello world!</h1>'if __name__ == '__main__':app.run()

文件wsgi.py

import syssys.path.insert(0, "D:/000/testweb")from hello import app application = app
5. 將Flask項目配置到Apache中
<VirtualHost *>WSGIScriptAlias / D:\000\testweb\wsgi.py<Directory 'D:\000\testweb'>Require all grantedRequire host ip</Directory> </VirtualHost>
6. 效果展示

一定是http://localhost/hello,不能https

域名綁定也能正常發布

7. 遺留的問題
7.1. 版本匹配

網上的主要說法都認為,Apache,Python,mod_wsgi必須版本匹配,主要是Python版本對應的編譯器,和Apache版本對應的編譯器應保持相同。查看對應版本的方法如下:
【Python版本號和編譯器版本號】

【編譯器版本號和VS/VC大版本的對應關系】
microsoft官方文檔https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-160

【Apache預編譯包的編譯器版本】

實踐過程中發現對于Python3.8.5,編譯器版本1924來說,Apache無論是vc15還是vs16,都沒有問題。

7.2. SSL

做完步驟5以后,總是出不來Flask項目的界面,我反復查一直以為是flask的wsgi沒能正確調用。折磨了好久最后才發現如果是http就可以,https就不行。如圖:

原因后面再談就,希望看到這里的人,不必和我一樣為了查原因而走彎路,耽誤過多的時間。

總結

以上是生活随笔為你收集整理的Apache24 + wsgi + Flask on Python3.8部署实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。