一. 安装
在WSL环境执行透过apt安装
sudo apt install nginx
二. 自动启动
1. 在WSL里编辑一个开机要自动执行的脚本
vi /etc/init-wsl
内容如下,把要开机就自动启动服务的指令加进去:
#!/bin/sh
sudo service nginx start
2. 设定执行权限
sudo chmod +x /etc/init-wsl
3. 在Windows计划任务程序,新增一个开机执行的任务来调用init-wsl
勾选延迟30秒时间启动
启动程序指令,-d 后面是指定WSL的发行版本,如果没需要可以省略
wsl -d Ubuntu-20.04 -u root /etc/init-wsl
确定时需要输入你Windows的密码
三. 端口转发
要让内网其它电脑可以访问,还需要打通二个点:
- 关闭防火墙或者设置入站规则
- 设置端口转发,让windows转发来自特定端口的请求到wsl2
设置方法如下:
- 在Windows编辑一个BAT档内容如下:
@ECHO OFF
rem Linux发行版的名称
SET DISTRO=Ubuntu-20.04
rem WSL内的端口号
SET WSL2PORT=80
rem 外部端口号
SET HOSTPORT=80
rem 删除原本的设定
NETSH INTERFACE PORTPROXY RESET
NETSH AdvFirewall Firewall delete rule name="%DISTRO% Port Forward"
rem 查询WSL环境此时的IP
WSL -d %DISTRO% -- ip addr show eth0 ^| grep -oP '(?^<=inet\s)\d+(\.\d+){3}' > IP.TMP
SET /p IP=<IP.TMP
rem 配置WSL2端口转发
NETSH INTERFACE PORTPROXY ADD v4tov4 listenport=%HOSTPORT% listenaddress=0.0.0.0 connectport=%WSL2PORT% connectaddress=%IP%
rem 配置防火墙
NETSH AdvFirewall Firewall add rule name="%DISTRO% Port Forward" dir=in action=allow protocol=TCP localport=%HOSTPORT%
ECHO WSL2 Virtual Machine %IP%:%WSL2PORT%now accepting traffic on %COMPUTERNAME%:%HOSTPORT%
-
在刚刚的Windows计划任务程序新增一个启动程序的操作任务,来执行这个BAT
设定完成!!
可以在Widnows环境执行下列指令查看端口转发设定
NETSH INTERFACE PORTPROXY Show all