引言

Windows Subsystem for Linux (WSL) 彻底改变了 Windows 用户的开发体验,特别是 WSL2 版本,它通过完整的 Linux 内核提供了接近原生的性能和兼容性。这使得开发者可以在熟悉的 Windows 系统上,无缝地利用 Linux 强大的生态系统和命令行工具。

本指南旨在提供一个全面的 WSL2 开发环境配置手册,帮助你高效地整合 IntelliJ IDEA、Go、Node.js、Git、Maven 等常用工具,并解决网络代理等常见问题,从而搭建一个流畅、高效的开发工作流。

重要提示:现代版本的 IntelliJ IDEA (2022.3+), GoLand, 和其他 JetBrains IDE 已经内置了对 WSL2 的无缝远程开发支持。推荐优先使用 IDE 自带的 WSL 远程功能,它比手动配置更简单、稳定,且能避免许多潜在的兼容性问题。

一、IntelliJ IDEA 与 WSL2 深度整合

1.1 将 WSL 设置为默认终端

要在 IDEA 中直接使用强大的 Linux 终端,可以按以下步骤操作:

  1. 打开 File -> Settings -> Tools -> Terminal
  2. Shell path 字段中,输入以下命令:
    1
    "cmd.exe" /k "wsl.exe"
  3. 保存后,新打开的终端窗口将直接进入 WSL 环境。

图:将 Shell path 设置为 wsl.exe

图:在 IDEA 中成功启动 WSL 终端

1.2 使用 WSL 中的 Node.js 环境

如果你的前端项目依赖于在 Linux 环境中运行的 Node.js,可以这样配置:

  1. 在 WSL 中安装 Node.js:推荐使用 nvm (Node Version Manager) 来管理 Node.js 版本。
  2. 配置 IDEA
    • 打开 File -> Settings -> Languages & Frameworks -> Node.js
    • 点击 Node.js interpreter 字段旁的 ... 按钮,选择 Add -> WSL
    • IDEA 会自动检测到你的 WSL 发行版 (如 Ubuntu),并定位到 Node.js 的安装路径。

图:选择通过 WSL 添加 Node.js 解释器

图:选择你的 WSL 发行版

1.3 使用 WSL 中的 Git

将 IDEA 的 Git 指向 WSL 中的 Git 可确保一致的行为和凭证管理:

  1. 打开 Settings -> Version Control -> Git
  2. Path to Git executable 中,填入 WSL 中 Git 的路径,格式为 \\wsl$\<Your-Distro-Name>\usr\bin\git。例如:
    1
    \\wsl$\Ubuntu-20.04\usr\bin\git
  3. 配置代理 (如果需要):在 WSL 终端中为 Git 设置网络代理。
    1
    2
    3
    # 设置全局代理
    git config --global http.proxy $http_proxy
    git config --global https.proxy $https_proxy

1.4 使用 WSL 中的 JDK 和 Maven (不推荐手动配置)

虽然可以手动配置 IDEA 使用 WSL 中的 JDK 和 Maven,但过程繁琐且容易出错,经常导致性能问题和刷新延迟。

强烈建议使用 IDEA 的远程开发功能 (Remote Development -> WSL),它会自动处理环境同步,提供最佳体验。

图:通过 IDEA 远程开发功能直接连接到 WSL 项目

如果仍需手动配置,以下为参考步骤:

  1. 在 WSL 中安装 JDK 和 Maven
    • JDK:
      1
      2
      3
      4
      # 下载并解压
      wget --no-check-certificate https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
      tar -zxvf jdk-17_linux-x64_bin.tar.gz
      sudo mv jdk-17.0.5/ /usr/local/jdk/
    • Maven:
      1
      2
      3
      4
      # 下载并解压
      wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
      tar -xzvf apache-maven-3.8.6-bin.tar.gz
      sudo mv apache-maven-3.8.6 /usr/local/maven/
  2. 配置环境变量 (/etc/profile~/.bashrc):
    1
    2
    3
    4
    5
    6
    7
    8
    # Java
    export JAVA_HOME=/usr/local/jdk/jdk-17.0.5
    export CLASSPATH=.:$JAVA_HOME/lib
    export PATH=$JAVA_HOME/bin:$PATH

    # Maven
    export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.6
    export PATH=$MAVEN_HOME/bin:$PATH
  3. 使配置生效source /etc/profile

二、在 WSL 中配置 Go 开发环境

  1. 安装 Go
    1
    2
    3
    # 下载并安装到 /usr/local
    wget --no-check-certificate https://golang.google.cn/dl/go1.19.3.linux-amd64.tar.gz
    sudo tar -xvf go1.19.3.linux-amd64.tar.gz -C /usr/local/
  2. 配置环境变量 (/etc/profile~/.bashrc):
    1
    2
    3
    4
    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export GOBIN=$GOROOT/bin
    export PATH=$PATH:$GOBIN
  3. 使配置生效并验证
    1
    2
    3
    source /etc/profile
    go version
    go env
  4. 配置 Go 代理
    由于网络原因,建议使用国内代理来加速模块下载。
    1
    go env -w GOPROXY=https://goproxy.cn,direct
  5. 配置 GoLand/IDEA
    同样,推荐使用 IDE 内置的 WSL 远程开发功能来打开和管理 Go 项目。

三、网络配置:为 WSL 设置代理

3.1 使用 Clash for Windows 作为 WSL 代理

  1. 开启 Clash 的局域网连接 (Allow LAN)
    在 Clash for Windows 的 General 设置中,打开 Allow LAN 开关。

  2. 在 WSL 中配置动态代理环境变量
    由于 WSL2 的虚拟网卡 IP 地址可能会变化,可以通过脚本动态获取 Windows 主机的 IP。将以下内容添加到 ~/.bashrc~/.zshrc

    1
    2
    3
    4
    export hostIp=$(ip route | grep default | awk '{print $3}')
    export http_proxy="http://$hostIp:7890"
    export https_proxy="http://$hostIp:7890"
    export all_proxy="sock5://$hostIp:7890"

    注意:7890 是 Clash 的默认端口,请根据你的实际配置修改。

  3. 使配置生效并测试

    1
    2
    source ~/.bashrc
    curl -I http://www.google.com

    如果成功,将返回 Google 服务器的 HTTP 头信息。

3.2 绕过特定域名的代理

如果某些内部服务或特定域名不需要通过代理访问,可以在 Clash for Windows 中进行配置。

  1. 进入 Settings -> System proxy
  2. 点击 Bypass Domain/IPNet 右侧的 Edit
  3. 在打开的 bypass.yaml 文件中添加需要绕过的域名,支持通配符 *
    1
    2
    3
    4
    5
    6
    7
    bypass:
    - "example.com"
    - "*.internal.company.com"
    - "127.0.0.1"
    - "localhost"
    - "::1"
    - "192.168.0.0/16" # 绕过内网地址
  4. 保存文件即可生效。

四、解决 WSL 中的应用兼容性问题

4.1 JMeter 中文乱码

如果在 WSL 的 GUI 环境下运行 JMeter 出现中文显示为方块,可以通过安装中文字体解决。

1
2
3
# 安装 Noto CJK 字体包
sudo apt update
sudo apt install fonts-noto-cjk -y

安装完成后,重启 WSL 即可。

总结

通过以上配置,你可以将 WSL2 打造成为一个功能强大且与 Windows 生态无缝协作的开发环境。核心思想是优先利用 IDE 的原生 WSL 支持,这能为你省去大量手动配置的麻烦。对于网络和特定工具的配置,掌握其基本原理可以帮助你更灵活地解决开发中遇到的问题。