Windows+WSL2自建专属个人服务器
通过启用Windows10或者Windows11中的WSL2的Ubuntu,在Ubuntu中构建一个属于自己的Linux服务器。
宿主计算机配置
开启WSL2
- 通过Windows的“启用或关闭Windows功能”开启Linux子系统功能:
- 勾选“适用于Linux的Windows子系统”
- 勾选“虚拟机平台”
- 配置WSL使用的版本为WSL2。
- 安装WSL2内核
- 在PowerShell中运行命令:
1
wsl --set-default-version 2
- 通过Windows的“应用商店”安装如下内容:
- 安装“Ubuntu”
WSL自启动
- 在Windows用户开机启动目录中添加
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
文件linux-start.vbs
,文件内容如下:1
2Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d Ubuntu -u root /etc/init.wsl"
- 上述文件内容包含如下信息:
- 指定
linux-start.vbs
为Windows启动时运行的程序; vbs
中运行Ubuntu
的WSL内的/etc/init.wsl
,指定-u root
执行运行的用户。vbs
中运行Ubuntu
的WSL内的/etc/init.wsl
,所以,我们需要提前在WSL2中创建好该文件,内容为需要开机启动的项目)。
- 指定
端口监听
- 通过Windows自带的
netsh
工具的端口代理功能,可以讲将WSL2的内部监听端口作用在宿主计算机上,达到端口转发的效果。1
2
3
4
5
6
7
8# 查看所有端口代理
netsh interface portproxy show all
# 增加一个IPV4到IPV4的端口代理
netsh interface portproxy add v4tov4 listenport=外部端口 connectaddress=localhost connectport=内部端口
# 增加一个IPV4到IPV6的端口代理
netsh interface portproxy add v4tov6 listenport=外部端口 connectaddress=localhost connectport=内部端口
# 删除指定的端口代理
netsh interface portproxy delete v4tov4 listenport=外部端口
释放磁盘
- 由于WSL2的特殊设计,其使用过的磁盘空间需要宿主计算机中通过如下命令才可以真正释放。
1
2# 关闭虚拟机
wsl --terminate Ubuntu - 通过
Powershell
运行diskpart
进入磁盘管理工具命令行内,再输入如下内容进行磁盘压缩1
2select vdisk file="C:\Users\【用户名】\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"
compact vdisk
(可选)显卡驱动(NVIDIA + CUDA)
- 下载并安装英伟达官方显卡驱动
WSL配置
SSH
- 安装OpenSSH
1
2sudo apt autoremove openssh-server
sudo apt install openssh-server - 配置OpenSSH
- 编辑文件
/etc/ssh/sshd_config
的如下配置:1
2
3
4
5
6
7
8
9
10# 将监听端口定在222用于将22预留给宿主计算机暴露给外部网络
Port 222
# 在IPV4上进行监听
ListenAddress 0.0.0.0
# 允许公钥进行登录
PubkeyAuthentication yes
# 允许密码进行登录
PasswordAuthentication yes
# 指定公钥存储目录
AuthorizedKeysFile .ssh/authorized_keys - 重新启动服务。
1
sudo service ssh restart
- (可选)在可信设备中,通过
ssh-copy-id
将公钥传入WSL配置免密登录。1
ssh-copy-id 用户名@地址 -p 端口
- 编辑
/etc/init.wsl
,将启动SSH作添加到Windows开机自启动脚本中。1
2#! /bin/sh
/etc/init.d/ssh start
Java
- 下载OpenJDK11并解压。
- 添加环境变量到
.bashrc
。1
2# OpenJDK11
export PATH=$PATH:/home/zsj/Desktop/00-DevBuild/jdk-11.0.14.1+1/bin - 修改
Maven
的setting.xml
依赖源为阿里云镜像1
2
3
4
5
6<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
Anaconda(Python)
- 下载Anaconda3运行安装,在安装阶段已经包含添加环境变量的配置。
NodeJS
- 下载NodeJS16并解压。
- 添加环境变量到
.bashrc
。1
2# NodeJS16
export PATH=$PATH:/home/zsj/Desktop/00-DevBuild/node-v16.14.2-linux-x64/bin - 修改
npm
的依赖源为淘宝镜像1
npm config set registry http://registry.npm.taobao.org/
Github
- 通过
ssh-keygen-t
生成密钥对1
ssh-keygen -t rsa
- 读出
~/.ssh/id_rsa.pub
内的公钥,将其添加到Github账户中
- 配置Git本地作者信息
1
2git config --global user.name "zhongshijie"
git config --global user.email "zhongshijie1995@outlook.com"
运行exe在宿主计算机上
- WSL2在执行
.exe
文件时会自动使用宿主计算机Windows来运行,所以要想运行宿主计算机的应用程序,直接运行它即可:1
2
3
4# 创建一个快捷方式在WSL中
ln -s '/mnt/c/Program Files (x86)/ToDesk/ToDesk.exe' /home/zsj/WindowsApp/ToDesk.exe
# 直接运行快捷方式
/home/zsj/WindowsApp/ToDesk.exe
Windows+WSL2自建专属个人服务器
https://zhongshijie1995.github.io/posts/20003/