将一个 .NET Core MVC 应用部署到 Windows 10 上通过 WSL 安装的 Ubuntu 环境中,可以分为几个步骤来完成。以下是详细的指南:
准备工作
确保你的Ubuntu环境已安装.NET SDK:
- 首先,你需要在WSL中的Ubuntu上安装.NET SDK。可以通过以下命令检查是否已经安装了.NET SDK,如果没有则需要进行安装:
深色版本
dotnet --version
- 如果没有安装,可以参考官方文档来进行安装。
- 首先,你需要在WSL中的Ubuntu上安装.NET SDK。可以通过以下命令检查是否已经安装了.NET SDK,如果没有则需要进行安装:
准备好你的.NET Core MVC项目:
- 在Windows环境中开发并测试好你的.NET Core MVC应用。
- 确保你能够通过
dotnet run
命令成功运行该项目。
部署步骤
将项目文件传输到Ubuntu环境:
- 可以使用上述提到的方法(例如直接访问Windows文件系统
/mnt/c/...
)将你的项目文件复制到Ubuntu环境下。或者使用Git等版本控制工具克隆代码仓库到Ubuntu。
- 可以使用上述提到的方法(例如直接访问Windows文件系统
发布项目:
- 进入到你的项目目录,并执行发布命令生成适用于生产环境的输出。你可以选择框架依赖或独立部署模式。这里以框架依赖为例:
深色版本
dotnet publish -c Release -o ./publish
- 此命令会在项目目录下创建一个
publish
文件夹,里面包含了所有运行应用程序所需的文件。
- 进入到你的项目目录,并执行发布命令生成适用于生产环境的输出。你可以选择框架依赖或独立部署模式。这里以框架依赖为例:
配置Kestrel或反向代理(如Nginx):
- 默认情况下,.NET Core应用程序使用Kestrel作为Web服务器。对于简单的应用场景,你可以直接运行发布的应用程序:
深色版本
cd ./publish dotnet YourAppName.dll
- 对于生产环境,建议配置反向代理如Nginx来转发请求到Kestrel。首先需要在Ubuntu上安装Nginx:
深色版本
sudo apt update sudo apt install nginx
- 接着,配置Nginx站点来指向你的.NET Core应用。这通常涉及到编辑Nginx的配置文件(位于
/etc/nginx/sites-available/default
或新建一个配置文件),添加类似下面的配置:深色版本
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服务器。对于简单的应用场景,你可以直接运行发布的应用程序:
启动应用并设置开机自启:
- 使用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 |