Windows下配置Apache來部署Flask應用,您需要遵循以下步驟:
1. 安裝Apache服務器
訪問Apache HTTP Server的官方網站下載Windows版本的Apache:http://httpd.apache.org/downloads.cgi
下載完成后,解壓文件到您希望安裝Apache的目錄,例如C:\Apache24。
2. 配置Apache以運行Python應用
Apache本身不能直接運行Python代碼。因此,您需要使用mod_wsgi模塊來使Apache支持WSGI協議,這樣才能運行Flask應用。
3. 準備Flask應用
確保您的Flask應用可以通過命令行啟動。通常,這意味著您需要有一個可以調用的主腳本地,例如app.py。
4. 配置虛擬主機
在Apache的配置目錄下(C:\Apache24\conf),創建或編輯一個名為httpd-vhosts.conf的文件,并添加以下內容:
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot "C:/path/to/your/flask/app"
WSGIScriptAlias / "C:/path/to/your/flask/app/app.py"
<Directory "C:/path/to/your/flask/app">
Require all granted
</Directory>
</VirtualHost>
將yourdomain.com替換為您的域名,C:/path/to/your/flask/app替換為您的Flask應用所在的目錄路徑,app.py替換為您Flask應用的主文件名。
5. 配置Windows主機文件
為了讓本地計算機能夠通過配置的域名訪問您的Flask應用,編輯Windows的主機文件。打開C:\Windows\System32\drivers\etc\hosts文件,并添加一行:
127.0.0.1 yourdomain.com
將yourdomain.com替換為您在Apache配置中設置的域名。
6. 啟動Apache服務器
在命令提示符下,導航到Apache的bin目錄,然后啟動Apache服務:
cd C:\Apache24\bin
httpd.exe
7. 訪問您的Flask應用
打開Web瀏覽器,輸入您在步驟5中設置的域名,例如http://yourdomain.com,您應該能夠看到您的Flask應用頁面。
確保在配置和部署過程中,您的Flask應用和Apache服務器都具有適當的權限。如果您的Flask應用需要處理HTTPS請求,您還需要獲取SSL證書,并在Apache配置中相應地設置SSL相關的配置。
在微軟官網《什么是適用于 Linux 的 Windows 子系統?》一文中對WSL(基于Windows的Linux子系統)進行概況:適用于 Linux 的 Windows 子系統可讓開發人員按原樣運行 GNU/Linux 環境 - 包括大多數命令行工具、實用工具和應用程序 - 且不會產生傳統虛擬機或雙啟動設置開銷。
在《比較 WSL 1 和 WSL 2》中詳細對比了WSL1和WSL2兩個版本之間的差異,簡言之:作為新版本的WSL2是基于微軟虛擬機Hyper-V技術的,具有完整的Linux內核,具有更高的性能,和上一代WSL1相比,除了跨操作系統文件IO性能降低之外,基本上以性能提升為主,因此建議一般情況下安裝WSL2.
按照官方文檔說明,手動安裝WSL1并升級到WSL2需要以下步驟,期間可能需要重啟幾次電腦。首先,由于WSL是基于虛擬化技術的,需要確定電腦CPU是否支持虛擬化,同時要在BIOS中開啟虛擬化支持,一般來說現代的CPU基本都支持虛擬化技術,只要在BIOS中開啟虛擬化支持即可,一般來說,Intel系列主板中開啟虛擬化的選項為Intel VM(Intel Virtual Technology虛擬化技術),而在AMD系列主板中可能位于CPU超頻選項的SVM選項中。
WSL2僅支持Windows10新版本下運行,低于 18362 的版本不支持WSL2。可以使用Windows10升級助手升級到最新版本。
需要下載WSL2 Linux內核更新包,并在安裝WSL1后進行安裝以更新至WSL2。
以管理員身份打開并運行以下命令:
//啟用“適用于 Linux 的 Windows 子系統”可選功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
//啟用虛擬機平臺可選功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
//設置WSL2為默認版本
wsl --set-default-version 2
//設置默認的WSL系統Linux版本
wsl -s <DistributionName>
在Windows商店中搜索Linux(或Ubuntu)并進行安裝,一般來說建議默認安裝Ubuntu。
以下為部分常用的WSL管理行命令
//查看安裝的wsl版本列表
wsl -l -v
//配置某個linux發行版為版本2
wsl --set-version (distro name) 2
//配置wsl默認版本為版本2
wsl --set-default-version 2
//以某個特定用戶運行某一個發行版
wsl -u <Username>
//注銷(卸載)某個發行版以重新安裝
wsl --unregister <DistributionName>
//為某個發行版配置默認用戶
<DistributionName> config --default-user <Username>
//停止所有正在運行的WSL子系統
wsl --shutdown
在WSL中安裝部署網絡應用如nginx或者nodejs應用等,可以在Windows系統下通過 localhost 域名進行訪問,和訪問windows原生系統下的網絡應用一樣。在使用windows10版本18945或者之前版本時,或者需要了解WSL系統ip地址時,可以執行以下操作:
如果要從 Linux 分發版訪問 Windows 上運行的網絡應用(例如,在 NodeJS 或 SQL 服務器上運行的應用),則需要使用主機的 IP 地址,可以執行以下步驟:
當使用遠程 IP 地址連接到應用程序時,它們將被視為來自局域網 (LAN) 的連接。 這意味著你需要確保你的應用程序可以接受 LAN 連接。例如,你可能需要將應用程序綁定到 0.0.0.0 而非 127.0.0.1 。 以使用 Flask 的 Python 應用為例,可以通過以下命令執行此操作: app.run(host='0.0.0.0') 。 進行這些更改時請注意安全性,因為這將允許來自你的 LAN 的連接。
在使用 WSL 1 分發版時,如果計算機設置為可供 LAN 訪問,那么在 WSL 中運行的應用程序也可供在 LAN 中訪問。但是在 WSL 2 中的情況有所不同。 WSL 2 有一個帶有其自己獨一無二的 IP 地址的虛擬化以太網適配器。 目前,若要啟用此工作流,你需要執行與常規虛擬機相同的步驟。下面是一個示例 PowerShell 命令,用于添加偵聽主機上的端口 4000 的端口代理并將其連接到端口 4000,并使用 IP 地址 192.168.101.100 連接到 WSL 2 VM。
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
//導出Ubuntu 20.04版本到d盤壓縮文件
wsl --export Ubuntu-20.04 d:\ubuntu20.04.tar
//注銷系統中當前運行的版本
wsl --unregister Ubuntu-20.04
//在d:\ubuntu目錄下重新導入并安裝分發版
wsl --import Ubuntu-20.04 d:\ubuntu d:\ubuntu20.04.tar --version 2
//設置默認登陸用戶為安裝時用戶名
ubuntu2004 config --default-user Username
//刪除tar文件(可選)
del d:\ubuntu20.04.tar
//如果之前Ubuntu 20.04是WSL默認子系統,則需要重新設置
wsl -s ubuntu2004
安裝WSL2后,可以在docker windows版本設置的general選項中,選擇 Use the WSL2 based engine ,已啟用WSL2功能。此時,修改Docker desktop的方法和前節修改WSL其他子系統方法一樣,只是,在Windows中,dockers程序被分為以下兩個wsl2的子系統:
修改步驟如下: