WSL 服务部署
将以下提示词粘贴到你的 AI 对话框中:
请根据官方安装指南 https://skillhub.cn/install/skillhub.md,将规范名为 @user_1876b8a1/wsl-service-deploy 的 WSL Service Deploy 技能安装到你的 AI 助手中。
技能介绍
要解决的问题
在 Windows 上用 WSL Ubuntu 部署后端服务时,常见几类麻烦:WSL 的 IP 动态变化,SSH 连接时灵时不灵;sudo 交互式要求输入密码,自动化脚本直接卡住;多步安装容易中途失败,apt 的依赖解析也不如 aptitude 可靠;改过的配置文件被覆盖后很难回滚。这个技能把整套流程收敛成一种“从 Windows 侧直接调用”的固定模式。
核心工作流
- 调用方式:使用
wsl.exe -e bash -c,从 Windows 宿主机直接执行 WSL 内的命令,绕开 SSH 和动态 IP 问题。 - 执行身份:通过
echo '' | su -c '' - root以 root 直接运行,跳过 sudo 密码交互。 - 脚本化:多步操作先写入
/tmp/下的脚本一次性执行,日志统一落在/tmp/*.log,方便事后排查。 - 包管理:统一用
aptitude;安装前先确认包未安装(which),清理 dpkg 残留锁文件,有残留 dpkg 进程时先killall apt、killall dpkg再dpkg --configure -a。 - 标准执行模式:写脚本 →
systemctl enable && systemctl start→ 有配置文件先cp备份为.bak再改 → 有默认认证就用服务自带 CLI 设置密码 → 验证版本号、端口监听、功能测试,三步缺一不可。 - 服务速查表:内置 MySQL(
mysql-server,数据目录/var/lib/mysql,端口 3306/33060,安装后ALTER USER设置 root 密码,认证插件mysql_native_password)和 Redis(redis-server,配置文件/etc/redis/redis.conf,6379 端口,设置requirepass和bind 0.0.0.0)的包名、目录、端口与自启方式。 - 速查表之外的服务:先
aptitude search搜包名,再用aptitude show或dpkg -L确认端口和配置路径,然后套用同一套标准模式推理部署,比如装 Nginx 就是搜包 → 写脚本 →systemctl enable nginx→curl localhost验证。
适用边界与注意点
- 面向 WSL Ubuntu 环境,资料中的环境是 Ubuntu 26.04 LTS、阿里云镜像源、root 密码 123456——这些前提需要与你的实际机器一致,否则要自行调整。
wsl.exe -e bash -c中避免多层引号嵌套,复杂命令改用 heredoc 脚本。- 下载、安装等耗时操作放后台执行加日志轮询,防止前台超时。
- 修改配置文件前必须先备份;安装完成后必须做密码登录、版本号、端口监听三类验证,不能只看进程是否起来。
使用场景
- Windows 开发者要在 WSL Ubuntu 里装 MySQL 做本地联调,按速查表完成安装、设密码、开自启
- 运维要把 WSL 实例中的 Redis 开放给外部连接,配置 requirepass 密码和 bind 地址
- 遇到速查表之外的服务,用 aptitude search 自行定位包名并套用标准流程部署
- WSL 里 dpkg 锁被残留进程占住导致安装中断,需要清锁、恢复 dpkg 后重新装
适合人员
- Windows 后端开发者,想免 SSH 在 WSL 里快速搭出可复现的本地 MySQL/Redis 环境
- 全栈工程师,经常在 Windows 机器上反复安装卸载测试服务,受够了 sudo 交互式密码
- 内部工具运维,负责维护几台 WSL 开发机上的数据库和缓存服务
- Agent 应用开发者,需要一个能被大模型直接执行的 Windows 侧 WSL 命令范式