將一個 .NET Core MVC 應用部署到 Windows 10 上通過 WSL 安裝的 Ubuntu 環境中,可以分為幾個步驟來完成。以下是詳細的指南:
準備工作
確保你的Ubuntu環境已安裝.NET SDK:
- 首先,你需要在WSL中的Ubuntu上安裝.NET SDK。可以通過以下命令檢查是否已經安裝了.NET SDK,如果沒有則需要進行安裝:bash
深色版本
dotnet --version
- 如果沒有安裝,可以參考官方文檔來進行安裝。
- 首先,你需要在WSL中的Ubuntu上安裝.NET SDK。可以通過以下命令檢查是否已經安裝了.NET SDK,如果沒有則需要進行安裝:bash
準備好你的.NET Core MVC項目:
- 在Windows環境中開發并測試好你的.NET Core MVC應用。
- 確保你能夠通過
dotnet run
命令成功運行該項目。
部署步驟
將項目文件傳輸到Ubuntu環境:
- 可以使用上述提到的方法(例如直接訪問Windows文件系統?
/mnt/c/...
)將你的項目文件復制到Ubuntu環境下。或者使用Git等版本控制工具克隆代碼倉庫到Ubuntu。
- 可以使用上述提到的方法(例如直接訪問Windows文件系統?
發布項目:
- 進入到你的項目目錄,并執行發布命令生成適用于生產環境的輸出。你可以選擇框架依賴或獨立部署模式。這里以框架依賴為例:bash
深色版本
dotnet publish -c Release -o ./publish
- 此命令會在項目目錄下創建一個?
publish
?文件夾,里面包含了所有運行應用程序所需的文件。
- 進入到你的項目目錄,并執行發布命令生成適用于生產環境的輸出。你可以選擇框架依賴或獨立部署模式。這里以框架依賴為例:bash
配置Kestrel或反向代理(如Nginx):
- 默認情況下,.NET Core應用程序使用Kestrel作為Web服務器。對于簡單的應用場景,你可以直接運行發布的應用程序:bash
深色版本
cd ./publish dotnet YourAppName.dll
- 對于生產環境,建議配置反向代理如Nginx來轉發請求到Kestrel。首先需要在Ubuntu上安裝Nginx:bash
深色版本
sudo apt update sudo apt install nginx
- 接著,配置Nginx站點來指向你的.NET Core應用。這通常涉及到編輯Nginx的配置文件(位于?
/etc/nginx/sites-available/default
?或新建一個配置文件),添加類似下面的配置:nginx深色版本
server {listen 80;server_name your_domain_or_IP;location / {proxy_pass http://localhost:5000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection keep-alive;proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;} }
- 默認情況下,.NET Core應用程序使用Kestrel作為Web服務器。對于簡單的應用場景,你可以直接運行發布的應用程序:bash
啟動應用并設置開機自啟:
- 使用systemd或其他服務管理工具為你的.NET Core應用創建一個服務,以便于管理應用的生命周期和實現開機自啟動。
通過以上步驟,你應該能夠在Windows 10上的Ubuntu WSL環境中成功部署一個.NET Core MVC應用程序。記得根據具體需求調整配置,比如安全設置、日志管理等。
.NET Core MVC 項目文件從 Windows 10 系統復制到 WSL 中的 Ubuntu 環境下,以便進行后續部署。
? 前提條件
- 你已經安裝了?Windows 10 + WSL2(推薦)
- WSL 中已安裝?Ubuntu(如 Ubuntu 20.04、22.04)
- 你已經在 Windows 上開發好了 .NET Core MVC 項目
- 你可以通過命令行訪問 Ubuntu(輸入?
wsl
?啟動)
📁 假設你的項目在 Windows 上的位置:
深色版本
C:\Users\YourWindowsUsername\source\repos\MyMvcApp
你想把這個項目復制到 WSL 的 Ubuntu 中的路徑是:
深色版本
/home/yourUbuntuUsername/myapps/MyMvcApp
🔧 步驟詳解
1?? 打開 Ubuntu(WSL)
在 Windows 中打開 PowerShell 或 CMD,輸入:
bash
深色版本
wsl
你現在就進入了 Ubuntu 的終端環境。
2?? 查看 Windows 文件系統掛載點
在 WSL 中,Windows 的磁盤會自動掛載在 /mnt/
下。例如:
- C 盤:
/mnt/c
- D 盤:
/mnt/d
所以你可以在 Ubuntu 中訪問你的 Windows 項目:
bash
深色版本
ls /mnt/c/Users/YourWindowsUsername/source/repos/MyMvcApp
?? 注意:替換
YourWindowsUsername
為你的實際 Windows 用戶名。
3?? 在 Ubuntu 中創建目標目錄(可選)
如果你想把項目復制到 Ubuntu 的本地文件系統中(推薦),先創建一個目錄:
bash
深色版本
mkdir -p ~/myapps/MyMvcApp
4?? 復制文件(方式一:使用 cp 命令)
使用 cp
命令將項目從 Windows 路徑復制到 Ubuntu 本地路徑:
bash
深色版本
cp -r /mnt/c/Users/YourWindowsUsername/source/repos/MyMvcApp/* ~/myapps/MyMvcApp/
-r
表示遞歸復制整個目錄及其內容
5?? 驗證復制是否成功
進入復制后的目錄并查看文件:
bash
深色版本
cd ~/myapps/MyMvcApp
ls
你應該能看到 .csproj
文件、Program.cs
、Startup.cs
(或 Program.cs
,取決于 .NET 版本)、Views
、Controllers
等文件和目錄。
6?? 恢復 NuGet 包(如果需要)
如果你只是復制了源碼,沒有發布,建議運行以下命令恢復依賴:
bash
深色版本
dotnet restore
7?? 運行項目測試一下(可選)
bash
深色版本
dotnet run
默認情況下,應用會在 http://localhost:5000
上運行。你可以在 Windows 瀏覽器中訪問這個地址測試是否部署成功。
💡 小技巧:直接從 Windows 使用 bash 命令復制
你也可以直接在 PowerShell 或 CMD 中調用 WSL 命令來完成復制操作:
powershell
深色版本
wsl cp -r /mnt/c/Users/YourWindowsUsername/source/repos/MyMvcApp /home/yourUbuntuUsername/myapps/
📌 提示與注意事項
內容 | 說明 |
---|---|
文件權限問題 | 如果你在 Ubuntu 中修改過文件,再回到 Windows 修改,有時會出現權限警告。建議主要在一個系統中編輯文件。 |
性能優化 | WSL2 對?/mnt/ ?路徑下的文件讀寫性能不如 Ubuntu 本地文件系統,建議將項目復制到 Ubuntu 本地路徑(如?/home/... )后再運行。 |
編輯器建議 | 可以使用 VS Code + Remote - WSL 插件,直接在 Ubuntu 環境中編輯代碼,無需手動復制。 |
? 總結
操作 | 命令 |
---|---|
查看 Windows 項目 | ls /mnt/c/Users/YourUser/path/to/project |
創建 Ubuntu 本地目錄 | mkdir -p ~/myapps/MyMvcApp |
復制項目到 Ubuntu | cp -r /mnt/c/.../MyMvcApp/* ~/myapps/MyMvcApp/ |
恢復項目依賴 | dotnet restore |
運行項目 | dotnet run |