ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

YiShaAdmin 部署上手指南:从环境准备到上线调优的完整路径

YiShaAdmin 部署上手指南:从环境准备到上线调优的完整路径

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.400

Windows 直接从官网下载安装包即可。团队协作建议在仓库根目录放一个 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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进