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/ 即可

相关推荐
软件测试很重要21 分钟前
UOS20系统安装与 SSH/XRDP 远程访问功能配置指南
linux·运维·ssh
xiaogg367833 分钟前
springboot rabbitmq 延时队列消息确认收货订单已完成
spring boot·rabbitmq·java-rabbitmq
麦兜*35 分钟前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
依稀i12344 分钟前
Spring Boot + MySQL 创建超级管理员
spring boot·mysql
千里码aicood1 小时前
【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
java·数据库·spring boot
Chan161 小时前
【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
java·spring boot·后端·sql·spring·intellij-idea·echarts
库库林_沙琪马1 小时前
REST接口幂等设计深度解析
spring boot·后端
GanGuaGua2 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm2 小时前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
不掰手腕2 小时前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql