YiShaAdmin 部署上手指南:从环境准备到上线调优的完整路径
【免费下载链接】YiShaAdmin基于 .NET Core MVC 的权限管理系统,代码易读易懂、界面简洁美观项目地址: https://gitcode.com/GitHub_Trending/yi/YiShaAdmin
YiShaAdmin 是基于 .NET Core MVC 的开源权限管理系统,内置员工组织、角色权限、菜单授权、定时任务、代码生成器等企业后台常用模块,适合拿来做网站管理后台、CRM、ERP、OA 的地基。这篇文章不按"问题清单"走,而是按你真正动手的顺序推进:备环境 → 起服务 → 进系统 → 排故障 → 上生产,每一步附最短可用的命令与配置。
一、动手前的环境预检
把三个问题确认清楚,后面 80% 的坑都能绕开。
- 装哪版 SDK:项目支持 .NET Core 7.0 / 6.0 / 3.1 / 2.2 四档,7.0 功能最新、6.0 生态成熟、3.1 长期支持、2.2 面向旧系统。任选其一,但必须与项目要求的版本匹配
- 数据库是否就绪:MySQL 或 SQL Server 二选一,服务要在运行状态
- 端口是否空闲:MVC 站点默认 5000,WebApi 站点默认 5001,被占用就要先腾出来
检查 SDK 版本:
dotnet --version dotnet --list-sdks如果本机版本不对,以安装 6.0 为例,Linux 上可以:
wget https://dot.net/v1/dotnet-install.sh chmod +x dotnet-install.sh ./dotnet-install.sh --version 6.0.400Windows 直接从官网下载安装包即可。团队协作建议在仓库根目录放一个 global.json 锁定 SDK 版本(dotnet new globaljson --sdk-version 6.0.400),避免每个人机器上版本漂移。
依赖恢复一条命令:
dotnet restore二、配置数据库并首次启动
连接串:只改一个文件
所有数据库与缓存配置集中在 YiSha.Web/YiSha.Admin.Web/appsettings.json 的SystemConfig段,核心就四项:
"DBProvider": "SqlServer", "DBConnectionString": "Server=localhost;User Id=sa;Password=你的密码;Database=YsData;", "CacheProvider": "Memory", "ApiSite": "http://localhost:5001"DBProvider填SqlServer或MySql- MySQL 连接串形如:
Server=localhost;Port=3306;Database=YiShaAdmin;Uid=root;Pwd=你的密码; - 改完后用客户端快速验证一下连接是否通
建库:脚本都在仓库里
Document/DatabaseScript/ 目录按数据库类型分好了脚本,mysql.sql/sqlserver.sql是建表结构,对应的_data.sql是初始数据,执行完库就算初始化完毕:
# MySQL 示例 mysql -u root -p < mysql.sql # SQL Server 则在 SSMS 中打开 sqlserver.sql 执行开发阶段先用简单密码把链路跑通,验证无误再换成强密码,不必一上来就纠结。
启动与首页自检
dotnet run浏览器访问站点,用默认账户登录:admin / 123456+ 图形验证码。登录成功后进入"系统管理 → 菜单管理",能看到完整的菜单树,说明库初始化和权限链路都是通的。首页的"框架介绍"卡片也会列出当前版本,首页即仪表盘:
三、登录之后的两类高频故障
菜单和权限问题、定时任务不跑,是新手反馈最集中的两件事。下面先用一棵决策树定位方向,再按分支给出口。
dotnet run 能起来吗? ├── 起不来 ──────────────→ 检查 SDK 版本(dotnet --list-sdks)→ 依赖恢复(dotnet restore) └── 能起来,连不上库? ├── 是 ──────────────→ 核对 appsettings.json 连接串 → 确认服务在跑、库已建、端口未被防火墙拦 └── 否,登录后左侧菜单是空的? ├── 是 ────────────→ 重跑 DatabaseScript 初始化脚本 → 检查"管理员"角色是否勾了全部菜单 └── 否,个别按钮点不了? ├── 是 ────────→ 到"角色管理"里给对应角色补勾该按钮的权限标识 └── 否,定时任务从未执行? ├── 是 ────→ 任务状态是否"启用" → Cron 表达式是否合法 → 看"日志"定位报错 └── 否 ────→ 系统正常 ✓分支 A:菜单为空 / 按钮不可用。YiShaAdmin 的权限精确到按钮级,"看不到菜单"和"按钮点不了"是两回事:前者多半是菜单数据没进库(重跑初始化脚本)或用户没挂角色("单位组织 → 员工管理"里编辑自己,勾上"管理员"角色);后者是角色没勾那个按钮的权限标识,到"系统管理 → 角色管理"里给角色补齐再保存。改完一律重新登录生效。
分支 B:定时任务不执行。路径在"系统工具 → 定时任务",按顺序查三处:状态开关是不是"启用";Cron 表达式是否合法(可先用在线生成器验证,0 0/5 * * * ?每 5 分钟一次、0 0 2 * * ?每天凌晨 2 点、0 0 12 ? * MON-FRI工作日午间);点任务里的"日志"看有没有报错、"下次执行时间"是否刷新。都正常却仍不跑,重启一次应用(Ctrl+C 后dotnet run)再观察。建议先配一个每分钟一次的测试任务,验证调度器本身没问题,再上正式业务任务。
四、上线前的缓存、性能与安全红线
缓存切换与连接池
- Memory → Redis:把
CacheProvider从Memory改成Redis,RedisConnectionString填127.0.0.1:6379,password=你的密码,defaultDatabase=0,重启后看日志确认连接成功。没有现成 Redis 的话,一条 Docker 命令起临时实例:docker run -d --name yisha-redis -p 6379:6379 redis:alpine - 连接池:在连接串末尾追加
Pooling=true;Min Pool Size=5;Max Pool Size=100; - 慢查询:大表务必分页;高频查询字段补索引;日志表定期清理,别让几百万行日志拖慢整个后台
多环境配置
仓库里已带 appsettings.Development.json,按同样方式补 Staging / Production 文件,再用ASPNETCORE_ENVIRONMENT指定环境,启动时会自动加载对应配置。
环境怎么选
| 场景 | 推荐组合 | 注意 |
|---|---|---|
| 个人开发 | Memory 缓存 + 本地库 | 数据重启即失,适合跑功能 |
| 小团队(10 人内) | SQL Server + Memory | 记得数据备份 |
| 生产环境 | MySQL + Redis | 配监控告警 |
| 高并发 | 读写分离 + Redis 集群 | 架构复杂度显著上升,按需评估 |
安全红线
生产环境禁用 admin / 123456 这类默认口令;执行任何 DDL 之前先备份数据库;连接串、密钥一律走配置文件或环境变量,不要硬编码进代码;启用 HTTPS 保护传输;保留 nlog 日志并接入监控;依赖包定期升到安全版本。
五、下一步往哪走
- 想搞懂权限原理:读一读 MenuAuthorizeBLL.cs 与 RoleBLL.cs,看菜单-角色-用户三级授权怎么串起来
- 想加速开发:用 YiSha.CodeGenerator 里的代码生成器,对着数据库表直接产出 CRUD 页面
- 想做开放接口:YiSha.Admin.WebApi 项目就是现成的 RESTful API 样板
部署只是起点,把上面这棵决策树记牢,之后遇到怪现象,顺着分支走比盲目重启快得多。
【免费下载链接】YiShaAdmin基于 .NET Core MVC 的权限管理系统,代码易读易懂、界面简洁美观项目地址: https://gitcode.com/GitHub_Trending/yi/YiShaAdmin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考