在idea无法访问WSL中Nacos的解决办法一文中,我们介绍了通过nginx
端口转发的方式访问WSL中安装的Nacos
。但是,如果你又安装了Seata
,你会发现用端口映射会报错,这个大家可以自己试一下。
其实,我们在使用WSL(我安装的Ubuntu 20.04)时,系统会给我们分配一个IP地址。
我们通过ifconfig
命令可以查看IP地址。
所以,更好的方式,肯定是我们通过这个分配的内网IP进行访问。但是,问题又来了,我们每次重启WSL之后,系统会重新分配以下IP地址,这肯定不是我们想要的结果,不然每个项目光改IP都能疯。同时,每次重启我们如果都执行一边服务启动命令(比如打开ssh、打开nginx、打开mysql等)也比较崩溃。
基于此,我们可以设置一个批量命令,一方面启动WSL同时可以自动设置一个固定的IP并开启我们的一些服务。
新建一个.bat
的文件,粘贴以下内容
@echo off
setlocal enabledelayedexpansion
::不管三七二十一先停掉可能在跑的wsl实例
wsl --shutdown ubuntu
::重新拉起来,并且用root的身份,启动服务
wsl -u root service ssh start
wsl -u root service nginx start
wsl -u root service mysql start
if !errorlevel! equ 0 (
:: 看看我要的IP在不在
wsl -u root ip addr | findstr "192.168.120.180" > nul
if !errorlevel! equ 0 (
echo wsl ip has set
) else (
::不在的话给安排上
wsl -u root ip addr add 192.168.120.180/24 broadcast 192.168.120.0 dev eth0 label eth0:1
echo set wsl ip success: 192.168.120.180
)
::windows作为wsl的宿主,在wsl的固定IP的同一网段也给安排另外一个IP
ipconfig | findstr "192.168.120.100" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 192.168.120.100 255.255.255.0
echo set windows ip success: 192.168.120.100
)
)
wsl -u root nohup /root/nacos/bin/startup.sh -m standalone >log.out 2>1 &
wsl -u root nohup /root/seata/seata-server-1.4.2/bin/seata-server.sh >log.out 2>1 &
pause
然后右键管理员身份运行,这样,每次我们打开WSL时,就固定了IP地址,并且帮我们运行了服务。
评论 (0)