整套流程Windows虚拟机部署 Nativefier打包保姆级分步指南我们将流程分为9大阶段从虚拟机安装到最终生成客户端每一步都附带具体命令和操作说明。阶段一Windows原生安装LinuxWSL 2 方案无需第三方虚拟机软件本方案使用Windows官方原生的WSL 2适用于Linux的Windows子系统无需安装VMware/VirtualBox等第三方虚拟机软件轻量高效、启动速度快完美兼容Docker、Java、Nginx等所有后续部署需求且后续阶段二~阶段九的所有操作命令100%通用无需修改。前置条件系统版本Windows 10 2004版本及以上 / Windows 11家庭版/专业版均支持操作全程建议使用管理员权限打开PowerShell/命令提示符步骤1启用WSL必需的Windows系统功能两种方式任选其一即可推荐命令行一键完成。方式A命令行一键启用推荐鼠标右键点击Windows开始菜单选择「Windows PowerShell (管理员)」Windows 11 选「终端(管理员)」复制以下命令粘贴到PowerShell中回车执行# 启用WSL功能、虚拟机平台功能WSL2必需dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart执行完两条命令后必须重启电脑使系统功能生效。方式B图形化界面启用按下WinR键输入optionalfeatures.exe回车打开「Windows功能」面板勾选以下两个选项✅ 适用于Linux的Windows子系统✅ 虚拟机平台点击确定等待系统安装组件完成后重启电脑。步骤2安装WSL 2 Linux内核更新包重启电脑后安装微软官方的WSL2内核更新包这是WSL2正常运行的必需组件官方下载地址https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载完成后双击安装包一路默认下一步完成安装。步骤3设置WSL默认版本为2核心再次以管理员权限打开PowerShell执行以下命令将WSL的默认版本设置为2必须操作否则无法正常运行Dockerwsl--set-default-version 2执行成功会提示有关与 WSL 2 的主要区别的信息请访问 https://aka.ms/wsl2步骤4安装Linux发行版推荐Ubuntu 22.04 LTS两种安装方式任选其一优先微软商店一键安装。方式A微软应用商店一键安装新手友好打开Windows自带的「Microsoft Store」微软应用商店搜索Ubuntu 22.04 LTS选择Canonical官方发布的版本点击「获取/安装」等待安装完成点击「打开」自动启动Linux系统。方式B命令行一键安装无微软商店可用管理员PowerShell中执行以下命令直接安装Ubuntu 22.04wsl--install-d Ubuntu-22.04步骤5初始化Linux系统设置账号密码首次启动Ubuntu会提示创建Linux用户名和密码自定义即可比如用户名admin密码123456输入密码时屏幕不会显示正常输入回车即可账号创建完成后进入Linux终端执行以下命令设置root密码后续部署需要sudopasswdroot# 先输入你刚创建的普通用户密码再设置root密码比如123456执行以下命令更新系统软件源后续安装软件速度更快sudoaptupdate-ysudoaptupgrade-y步骤6核心网络配置后续部署全依赖1. 获取Linux系统的IP地址记下来后续所有配置都要用在Ubuntu终端中执行以下命令获取WSL2的IP地址ipaddr|grepeth0|grepinet输出示例inet 172.26.10.100/20 brd 172.26.15.255 scope global eth0其中172.26.10.100就是你的WSL Linux系统IP替换原流程中所有的「虚拟机IP」。2. 验证Windows与Linux网络互通在Windows的CMD/PowerShell中执行ping 上面获取的WSL IP能ping通则网络正常。后续你在WSL中启动Nginx、MySQL、OnlyOffice等服务Windows上可以直接通过WSL IP:端口访问和原虚拟机效果完全一致。步骤7WSL2固定IP方案必做避免重启后IP变化WSL2默认重启后IP会自动变化会导致你打包的客户端、jar包配置的地址失效这里提供最简单的固定IP方案一劳永逸。打开Windows文件资源管理器进入C:\Users\你的Windows用户名目录新建一个名为.wslconfig的文件注意文件名前面有个点无后缀名用记事本打开该文件粘贴以下内容自定义固定IP示例固定为192.168.100.100[wsl2] networkingModebridged dhcpfalse # 固定WSL的IP地址可自定义 ipAddress192.168.100.100 netmask255.255.255.0 # 固定网关地址 gateway192.168.100.1 # 开启Windows自动转发WSL端口 localhostForwardingtrue保存文件关闭所有WSL终端在管理员PowerShell中执行以下命令重启WSL生效wsl--shutdown重启WSL后再次执行ip addr查看IP就会固定为你设置的地址后续所有配置都用这个固定IP即可。常见避坑提示必须使用WSL 2版本WSL 1不支持Docker的完整功能无法正常运行OnlyOffice容器所有PowerShell操作必须以管理员权限运行否则会出现权限不足报错若Windows无法访问WSL的端口先临时关闭Windows防火墙测试排查是否被拦截WSL系统默认随Windows启动自动运行无需手动开机后台静默运行资源占用极低阶段二Linux虚拟机基础环境配置虚拟机内操作1. 关闭防火墙测试用生产环境建议开放指定端口systemctl stop firewalld systemctl disable firewalld setenforce02. 安装Docker用于跑OnlyOffice、MySQL、Redis# 1. 安装依赖yuminstall-yyum-utils device-mapper-persistent-data lvm2# 2. 配置阿里云Docker源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 3. 安装Dockeryuminstall-ydocker-ce docker-ce-cli containerd.io# 4. 启动Docker并设置开机自启systemctl startdockersystemctlenabledocker# 5. 验证Docker安装docker-v3. 安装JDK 1.8跑Java jar包# 1. 下载JDK 1.8或上传你自己的JDK包yuminstall-yjava-1.8.0-openjdk java-1.8.0-openjdk-devel# 2. 验证安装java-version4. 安装Nginx放前端包# 1. 安装Nginxyuminstall-ynginx# 2. 启动Nginx并设置开机自启systemctl start nginx systemctlenablenginx# 3. 验证安装在Windows浏览器访问 http://虚拟机IP能看到Nginx欢迎页阶段三部署OnlyOffice文档服务器虚拟机内操作直接使用你提供的Docker命令注意数据卷挂载和JWT配置# 1. 创建OnlyOffice数据目录mkdir-p~/onlyoffice/data# 2. 运行OnlyOffice容器dockerrun-d\--nameonlyoffice\--restartalways\-p7001:80\-v~/onlyoffice/data:/var/www/onlyoffice/Data\-eJWT_ENABLEDtrue\-eJWT_SECRET159150\onlyoffice/documentserver:latest# 3. 验证部署等待1分钟在Windows浏览器访问 http://虚拟机IP:7001能看到OnlyOffice欢迎页阶段四部署MySQL数据库虚拟机内操作1. 用Docker运行MySQL# 1. 创建MySQL数据目录mkdir-p~/mysql/data# 2. 运行MySQL容器设置root密码为 123456端口3306dockerrun-d\--namemysql\--restartalways\-p3306:3306\-v~/mysql/data:/var/lib/mysql\-eMYSQL_ROOT_PASSWORD123456\mysql:5.7# 3. 验证MySQL运行dockerps|grepmysql2. 导入你的数据库SQL文件# 1. 先把你的SQL文件比如 app.sql上传到虚拟机 /root 目录# 2. 进入MySQL容器并创建数据库假设数据库名是 app_dbdockerexec-itmysql mysql-uroot-p123456-eCREATE DATABASE IF NOT EXISTS app_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;# 3. 导入SQL文件到 app_db 数据库dockerexec-imysql mysql-uroot-p123456app_db/root/app.sql阶段五部署Redis虚拟机内操作# 1. 用Docker运行Redis简单版无密码端口6379dockerrun-d\--nameredis\--restartalways\-p6379:6379\redis:6.2# 2. 验证Redis运行dockerps|grepredis阶段六部署Java后端jar包虚拟机内操作1. 修改jar包配置文件关键先把你的jar包比如app.jar上传到虚拟机/root目录。解压jar包修改配置文件假设配置文件在BOOT-INF/classes/application.yml# 1. 进入jar包所在目录cd/root# 2. 创建临时目录解压配置文件mkdirtempcdtemp# 3. 解压jar包中的配置文件jar-xf../app.jar BOOT-INF/classes/application.yml# 4. 编辑配置文件用vi或vim把下面的IP改成你的虚拟机IP 192.168.1.100viBOOT-INF/classes/application.yml必须修改的配置项在application.yml中# 1. OnlyOffice配置把127.0.0.1改成虚拟机IPonlyoffice:document-server:url:http://192.168.1.100:7001jwt:secret:159150# 和OnlyOffice的JWT_SECRET一致# 2. MySQL配置把127.0.0.1改成虚拟机IPspring:datasource:url:jdbc:mysql://192.168.1.100:3306/app_db?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghaiusername:rootpassword:123456# 3. Redis配置把127.0.0.1改成虚拟机IPredis:host:192.168.1.100port:6379# 4. 后端端口假设是8080保持默认或自定义server:port:8080把修改后的配置文件塞回jar包# 1. 更新jar包中的配置文件jar-uf../app.jar BOOT-INF/classes/application.yml# 2. 返回上级目录删除临时目录cd..rm-rftemp2. 后台运行jar包# 1. 后台运行jar包日志输出到 app.lognohupjava-jarapp.jarapp.log21# 2. 验证运行查看日志看是否启动成功tail-fapp.log# 3. 测试后端接口在Windows浏览器访问 http://虚拟机IP:8080/你的接口路径阶段七部署前端包 Nginx配置虚拟机内操作1. 上传前端包把你的前端打包文件通常是dist文件夹上传到虚拟机/usr/share/nginx/html目录下。2. 配置Nginx编辑Nginx配置文件vi/etc/nginx/conf.d/default.conf替换为以下内容注意修改虚拟机IP和前端路径server { listen 80; server_name 192.168.1.100; # 改成你的虚拟机IP # 前端页面配置 location / { root /usr/share/nginx/html/dist; # 改成你的前端dist包路径 index index.html index.htm; try_files $uri $uri/ /index.html; # 解决前端路由刷新404问题 } # 后端接口反向代理 location /api/ { # 假设你的后端接口都以 /api 开头 proxy_pass http://192.168.1.100:8080/; # 改成你的虚拟机IP:后端端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # OnlyOffice反向代理如果前端需要通过Nginx访问OnlyOffice location /onlyoffice/ { proxy_pass http://192.168.1.100:7001/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } }3. 重启Nginx使配置生效nginx-t# 测试配置文件是否正确systemctl restart nginx4. 测试前端访问在Windows浏览器访问http://虚拟机IP比如http://192.168.1.100确认能正常打开前端页面、登录系统、使用OnlyOffice功能。阶段八Nativefier一键打包成Windows客户端Windows上操作1. 安装Node.js去官网下载Windows版Node.js一路默认安装https://nodejs.org/2. 打开命令提示符CMD安装Nativefiernpminstall-gnativefier3. 一行命令打包客户端把命令里的http://192.168.1.100改成你的虚拟机IP我的Java系统改成你想要的客户端名称# 基础打包命令nativefierhttp://192.168.1.100--name我的Java系统--width1200--height8004. 获取客户端执行后会在CMD当前目录下生成一个文件夹比如我的Java系统-win32-x64里面的我的Java系统.exe就是最终的客户端阶段九后续优化建议可选固定虚拟机IP在Linux虚拟机里配置静态IP避免重启后IP变化导致客户端无法访问。jar包开机自启编写systemd服务文件让jar包随Linux系统启动自动运行。客户端美化Nativefier支持添加自定义图标--icon 图标路径.ico、隐藏菜单栏--disable-context-menu等。数据备份定期备份MySQL数据卷和OnlyOffice数据卷。关键检查清单部署完必做Windows能ping通虚拟机IPWindows浏览器能访问http://虚拟机IP前端Windows浏览器能访问http://虚拟机IP:7001OnlyOfficejar包日志无报错后端接口正常Nativefier打包的exe能正常打开并登录系统需要我帮你生成jar包的systemd开机自启服务文件或者提供Nativefier的高级美化命令吗