ModernWMS 从零到登录页:新手 30 分钟搭好免费开源 WMS 仓储系统
【免费下载链接】ModernWMSThe open source simple and complete warehouse management system is derived from our many years of experience in implementing erp projects. We stripped the original commercial system wms function and opened it up for free, hoping to help the majority of small and medium-sized enterprises. At present, the system supports cross-platform。项目地址: https://gitcode.com/GitHub_Trending/mo/ModernWMS
ModernWMS 是一套免费开源的仓库管理系统(WMS),管入库、库存、出库这条主线,专为中小仓库设计。跟着本文部署一遍,30 分钟就能拿到一个带演示数据、能直接登录操作的完整仓储系统。
最快路径:Docker 打包,10 分钟出登录页
先说实话:仓库docker/目录里只有空占位文件,镜像里并没有现成产物,所以"一条命令"前面得先编译一次。下面是完整最短路径,以 Ubuntu 22.04 为例,CentOS/Debian 把包管理器换一下就行。
第 1 步,拉源码——这步只是把代码拿到本地:
git clone https://gitcode.com/GitHub_Trending/mo/ModernWMS cd ModernWMS看到 frontend、backend、docker 三个目录就对了。
第 2 步,装编译环境——.NET 7 SDK(后端运行框架)+ Node 16(前端构建链):
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt update && sudo apt install -y dotnet-sdk-7.0 nodejs sudo npm install -g yarn跑dotnet --version输出 7.x 即成功。
第 3 步,编译前后端——前端出静态页,后端出 dll:
cd frontend && yarn && yarn build cd ../backend/ModernWMS && dotnet publish -c Release -o ./publish成功标准:frontend/dist/里有 index.html,publish/里有 ModernWMS.dll。
第 4 步,把产物塞进 docker 目录,并把前端写死的后端地址改对——这步最容易漏。前端构建时会把后端地址"焊死"进静态文件,必须指向"你服务器 IP + 容器内后端端口 21011"。打开frontend/.env.production:
VITE_BASE_PATH = http://你的服务器IP VITE_SERVER_PORT = 21011 // ← 只改这两行,然后重新 yarn buildcp -rf frontend/dist/* docker/frontend/ cp -rf backend/ModernWMS/publish/* docker/backend/ cd docker && docker build -t modernwms .第 5 步,一条命令起容器:
docker run -d -p 80:80 -p 21011:21011 --name modernwms modernwms浏览器开http://服务器IP,看到登录页就成功了。
跑通之后:用三个真实场景认识这套 WMS
场景一:货到仓,走入库。供应商送货前,你在"收货管理"里创建到货通知单,填商品、数量、供应商;货到了按"待到货 → 待分拣 → 待上架"逐签,每个 Tab 对应一个物理动作(卸货、分拣、上架),全签完库存自动增加,明细在"收货明细"页可查。
场景二:客户下单,走出库。"发货管理"按"新建出库单 → 签到 → 拣货 → 包装 → 称重 → 发货"推进,顶部 Tab 就是状态过滤器,卡在哪一步、单量多少一目了然,每一步都能单独筛选和导出。
场景三:月底盘库、查库存。平时去"库存管理"按 SKU 或库位看实时数量,还能按库龄、呆滞过滤;盘点时去"仓内作业 → 库存盘点"建单,录入实盘数、确认差异,系统自动转成库存调整单。首页左侧的菜单树就是这套业务的完整目录。
不用 Docker:裸机编译部署,Linux 和 Windows 都通
兼容清单:
| 组件 | 版本要求 |
|---|---|
| .NET SDK | 7.0 |
| Node.js | 16.x(yarn 用 npm -g 装) |
| nginx | 1.18+,只用来发静态页 |
| 数据库 | SQLite(内置)/ MySQL 8 / SQL Server 2017+ / PostgreSQL 12 |
前端构建(先改 IP 再打包,改的是写死后端地址的那行):
cd ModernWMS/frontend sed -i 's#http://127.0.0.1#http://服务器IP#g' .env.production yarn && yarn build cp -rf dist/* /var/www/modernwms/后端发布(顺带把演示数据库 wms.db 拷过去):
cd ../backend && dotnet publish cp -rf ModernWMS/bin/Debug/net7.0/publish/* /var/www/modernwms-api/ cp -rf ModernWMS/wms.db /var/www/modernwms-api/启动——注意必须带--urls,原因见下面卡点第一条:
cd /var/www/modernwms-api dotnet ModernWMS.dll --urls http://0.0.0.0:20011nginx 把/var/www/modernwms指到 80 端口启动即可,浏览器访问http://IP出登录页就跑通了。Windows 上流程相同:装完 SDK 和 Node 的安装包后照样编译,前端丢进 nginx 的 html 目录再启动 nginx.exe,具体差异见 README.zh_CN.md 的 Windows 一节。
首次登录:admin 密码 1,这 5 个配置上线前必改
登录页用admin/1进去,左侧是这副推车插画,看到它说明静态资源没问题:
能进去之后,先别急着用,把下面这几项过一遍:
| 配置项 | 默认值 | 建议改成什么 |
|---|---|---|
前端.env.production的VITE_BASE_PATH | http://127.0.0.1 | 你的服务器 IP(改完必须重新 build) |
前端.env.production的VITE_SERVER_PORT | 20011 | 跟后端启动端口保持一致 |
后端 appsettings.json 的"db" | MySql | 没装库就用"SqlLite",自带 wms.db 开箱即用 |
ConnectionStrings.MySqlConn | root/123456,库名 wms | 你的真实密码,且提前建好 wms 库 |
TokenSettings.SigningKey | ModernWMS_SigningKey | 自己随机生成的长字符串,这是 JWT 签名密钥 |
appsettings.json里只需动这一行的话:
"Database": { "db": "SqlLite" }, // ← 不用 MySQL 就改这里登进系统后顺手去"基础设置 → 用户管理"把 admin 密码改掉,别拿初始密码过夜。
高频卡点速查:5 个现象对号入座
- 【页面能开,但所有数据请求失败、一直转圈】→ 前后端端口没对上:
Program.cs里硬编码了 5555 端口,不带参数启动后端就监听 5555,而前端写死调 20011 → 启动时加dotnet ModernWMS.dll --urls http://0.0.0.0:20011,一劳永逸。 - 【后端一启动就报连不上数据库】→ 配置默认
"db": "MySql",但你机器上没有这个库 → 改成"SqlLite"(仓库自带 wms.db),或先把 MySQL 建好 wms 库再启动。 - 【构建完登录提示请求失败,清缓存也没用】→ 前端把后端地址在构建期写死了,你忘了改
VITE_BASE_PATH→ sed 换成服务器 IP 后重新yarn build,运行时改配置是不生效的。 - 【80 端口被别的服务占了】→ 改 docker/nginx.conf 里 nginx 的 listen 端口,前端
.env.production端口同步改,容器映射换成-p 新端口:80重建镜像即可。 - 【换成 MySQL 后页面报没有某张表】→ 仓库只内置了 SQLite 演示库,MySQL 是空库 → 先建 wms 库并把表结构导进去再启动,别指望它自动建表。
进阶:备份、反代、权限,各两三句
- 备份:SQLite 方案下全部数据就在
wms.db一个文件里,备份 = 复制它,cron 里每天拷一份走;MySQL 方案用 mysqldump 定时导 wms 库。 - 反向代理:生产环境让 nginx 统一收口,
/指静态页、/api反代到 127.0.0.1:20011,后端端口不用对公网暴露,docker/nginx.conf 里被注释的那段就是现成写法。 - 权限:进"基础设置 → 角色设置 / 菜单设置",按角色勾菜单可见性和按钮级动作,实现代码在 backend/ModernWMS.WMS/Controllers/Rolemenu/。
- 多实例:后端 JWT 无状态,可以挂多台做轮询;但 SQLite 方案并发写会卡,多实例务必切 MySQL。
部署通了,先拿内置演示数据把"一张收货单 + 一张发货单"从头走一遍;流程熟了,再去后台把演示数据清空,录入自己的 SKU 开工。
【免费下载链接】ModernWMSThe open source simple and complete warehouse management system is derived from our many years of experience in implementing erp projects. We stripped the original commercial system wms function and opened it up for free, hoping to help the majority of small and medium-sized enterprises. At present, the system supports cross-platform。项目地址: https://gitcode.com/GitHub_Trending/mo/ModernWMS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考