WSL2 - 让 IDEA 的 SpringBoot 应用跑在 Win 的 Linux 子系统中(全流程)

前言

WSL2 是通过在 Windows 上运行一个轻量级的 Linux 虚拟机(包含真正的 Linux 内核),来实现 Ubuntu 等发行版的原生兼容性。

本文将以 Ubuntu 子系统为例。

配置 Ubuntu 子系统

环境配置

开启 CPU 虚拟化

CPU 虚拟化,大部分电脑默认都开启了,可以打开任务管理器,选择性能选项,观察如下,表示已经开启:

如果显示未开启,那么在重启电脑,并在重启电脑时连按 del键(大部分电脑是这个键,也可能是 f2),进入 BIOS 界面,进入 Advanced 板块,找到英特尔 VMX 虚拟化平台,并开启即可。

开启 Windows 功能

1)点击 win 键,搜索 启用或关闭 Windows功能 ,如下

2)勾选 适用于 Linux 的 Windows 子系统Virtual Machine Platform 这两个选项

开始安装

1)以管理员身份打开 cmd,输入 wsl --install,如果是国内网络的话,建议使用 wsl --install --web-download ,回车后开始安装,默认下载 Ubuntu。

下载完成后会提示你输入用户名和密码:

2)当然 wsl 也可以安装其他 Linux 系统,通过输入命令 wsl --list --online 展示出所有可以安装的子系统

例如安装 kali-linux,就可以使用 wsl --install kali-linux --web-download 进行安装。

启动和停止子系统

1)打开终端,输入 wsl --list -v 就可以显示出安装的子系统列表。

Ps:version 为 2,表示通过 wsl2 安装

这里默认使用的 Ubuntu 子系统,如果你想默认子系统为 kali-linux,可以使用命令 wsl --set-default kali-linux

2)可以通过终端下拉列表启动子系统

或者从开始菜单中搜索子系统名称进行启动

3)如果想停止,直接关闭窗口即可

4)此时,还可以通过 win 的终端运行 linux 命令(加上 wsl 这个前缀即可),例如如下:

Windows 查看 Linux 文件

1)打开 此电脑 就可以看到左下角有一个 Linux 图标,如下:

里面就对应着子系统的文件列表。

Ps:如果没有看到这个 Linux 的小图标,说明你的 wsl 版本有点问题,打开终端,输入 wsl --update ,然后重启电脑,即可解决。

子系统备份和导入(可以换盘存储)

子系统默认存储在 c 盘,如果不想占用 c 盘空间,例如换到 d 盘,可以先将子系统备份,然后再导入到 d 盘。

1)输入 wsl --export Ubuntu ubuntu.tar ,即可将 Ubuntu 子系统导出到当前目录下的 ubuntu.tar 文件中(不存在会自动创建)

2)导入语法如下:

bash 复制代码
wsl --import 自定义子系统名称 导入的位置 导出的tar包位置

例如这里我导入到 D:\ubuntu 目录下,那么可以使用命令 wsl --import Ubuntu-24 D:\ubuntu C:\Users\cyk\ubuntu.tar

导入成功后,就可以再 D:\ubuntu 目录下看到 Hyperv 的镜像文件(子系统中的所有文件都存在这个镜像文件中了)

此时在终端输入 wsl --list -v 就可以看到刚刚导入的 Ubuntu24 了

3)输入 wsl --set-default Ubuntu-24 设置为默认子系统为 Ubuntu-24,然后输入 wsl --unregister Ubuntu 即可卸载之前下载到 C 盘的 Ubuntu 子系统

魔法配置

如果win配置的有魔法,那么直接开启 TUN 模式即可

让 Win 中 IDEA 运行的 SpringBoot 应用跑在 Ubuntu 子系统中

场景解释

IDEA 是在 windows 上运行的,但是希望他能将 SpringBoot 项目在 WSL 的 Ubuntu 环境中运行,这样可以利用 Ubuntu 的 Linux 环境,更贴近线上部署环境。

例如我要写一个基于 Ansible 的发布系统,就很难跑在 Win 环境上测试。

Ps:IntelliJ IDEA(2020.3+)已经原生支持在 WSL 中运行项目。

实现步骤

1)确认 WSL 是 WSL2,可以通过 wsl -l -v 查看,如果显示 Ubuntu Running 2,表示就是 WSL2

2)在 Ubuntu 子系统中安装 Java 和 maven 工具,如下:

bash 复制代码
sudo apt update
sudo apt install openjdk-17-jdk maven

检查 java 和 maven 版本(是否安装成功)

3)打开 IDEA 项目,进入 Run/Debug Configurations 配置中,选择运行在 WSL 如下:

随后运行 SpringBoot 项目,可以看到已经跑在了子系统中

访问跑在 Ubuntu 子系统中的 SpringBoot 端点

假设要访问这个端点

1)进入 Ubuntu 子系统,输入如下命令,来确定内网ip

bash 复制代码
hostname -I

2)接着访问 http://172.18.1.112:8080/hello/ 即可

相关推荐
Web3探索者1 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo2 天前
Linux系统中网线与USB网络共享冲突
linux
java小白小2 天前
SpringBoot(01): 初识SpringBoot,从Spring的痛点说起
spring boot
用户3169353811833 天前
如何从零编写一个 Spring Boot Starter
spring boot
Sokach10153 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao3 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
程序员晓琪3 天前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly3 天前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
用户3521802454754 天前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
zzzzzz3105 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql