本期推荐的是一个基于Hyperf框架 和 SCUI(Element UI)开发的前后端分离权限管理系统——MineAdmin。
MineAdmin基于 Hyperf 框架开发,前端使用Vue3.0 + SCUI(基于 Element UI),支持PC和移动端,系统可以用于网站管理后台、CMS、CRM、OA、ERP等。MineAdmin是一个后台权限管理系统,提供完善的权限体系,开发者可以把注意力集中到具体业务当中,降低开发成本,提高项目效率。
内置功能
- 用户管理,完成用户添加、修改、删除配置,支持不同用户登录后台看到不同的首页
- 部门管理,部门组织机构(公司、部门、小组),树结构展现支持数据权限
- 岗位管理,可以给用户配置所担任职务
- 角色管理,角色菜单权限分配、角色数据权限分配
- 菜单管理,配置系统菜单和按钮等
- 字典管理,对系统中经常使用并且固定的数据可以重复使用和维护
- 系统配置,系统的一些常用设置管理
- 操作日志,用户对系统的一些正常操作的查询
- 登录日志,用户登录系统的记录查询
- 在线用户,查看当前登录的用户
- 服务监控,查看当前服务器状态和PHP环境等信息
- 依赖监控,查看当前程序所依赖的库信息和版本
- 附件管理,管理当前系统上传的文件及图片等信息
- 数据表维护,对系统的数据表可以进行清理碎片和优化
- 模块管理,管理系统当前所有模块
- 数据表设计器,简单版数据库设计器,搭配代码生成器事半功倍
- 定时任务,在线(添加、修改、删除)任务调度包含执行结果日志
- 代码生成,前后端代码的生成(php、vue、js、sql),支持下载和生成到模块
- 缓存监控,查看Redis信息和系统所使用key的信息
- API管理,对应用和接口管理、接口授权等功能。接口文档自动生成,输入、输出参数检查等
安装部署
1 服务器要求
MineAdmin 对系统环境有一些要求,当您使用 Swoole 网络引擎驱动时,仅可运行于 Linux 和 Mac 环境下,但由于 Docker 虚拟化技术的发展,在 Windows 下也可以通过 Docker for Windows 来作为运行环境。
2 环境需求
- Swoole >= 4.5.x 并关闭 Short Name
- PHP >= 7.4 并开启以下扩展:mbstring、json、pdo、openssl、redis、pcntl
- Mysql >= 5.7
- Redis >= 4.0
3 下载项目
MineAdmin没有使用SQL文件导入安装,系统使用Migrates迁移文件形式安装和填充数据,请知悉。
项目下载,请确保已经安装了 Composer :
git clone https://gitee.com/xmo/MineAdmin && cd MineAdmin
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer install
4 后端安装
项目安装需要开两个终端,一个启动项目,一个执行安装命令。
打开启动终端,启动项目:
php bin/hyperf.php start
切换到安装终端,执行安装命令,完成 .env 文件的配置:
php bin/hyperf.php mine:install
待提示以下信息后,切换到启动终端,重启项目,加载 .env 配置信息:
Reset the ".env" file. Please restart the service before running
the installation command to continue the installation.
切换到安装终端,再次执行安装命令,执行Migrates数据迁移文件和SQL数据填充,完成安装。
php bin/hyperf.php mine:install
5 前端安装
请先确保安装了node.js,yarn 或者 npm 工具,建议使用yarn。
cd mine-ui && yarn
or
cd mine-ui && npm install
启动:
yarn dev
or
npm run dev
实际开发中,可以使用 php watch -c 来启动项目,它可以监听文件的改动实时热重启,提高开发效率。
6 项目部署
项目需要线上环境部署或者测试的时候,本地与线上环境不一致或者前端和后端不在一个服务器上面,需要进行 Nginx 反向代理,以及修改前端的部分配置。
- 后端代理
# 至少需要一个 Hyperf 节点,多个配置多行
upstream hyperf {
# Hyperf HTTP Server 的 IP 及 端口
server 127.0.0.1:9501;
}
server {
# 端口
listen 80;
# 域名
server_name demo.mineadmin.com;
# 日志
access_log /data/wwwlogs/demo.mineadmin.com_nginx_access.log combined;
error_log /data/wwwlogs/demo.mineadmin.com_nginx_error.log debug;
# 同域根目录前端代码部署,注意:
location / {
root /data/wwwroot/demo.mineadmin.com;
try_files $uri $uri/ /index.html;
index index.html;
}
# 支持自定义下划线参数通过header传输
# underscores_in_headers on;
# PHP 代码
location /api/ {
# 将客户端的 Host 和 IP 信息一并转发到对应节点
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 将协议架构转发到对应节点,如果使用非https请改为http
proxy_set_header X-scheme https;
# 执行代理访问真实服务器
proxy_pass http://hyperf/;
}
}
- 前端必要配置
前端也使用了代理方式来请求后端接口
在 mine-ui/vue.config.js 里面找到以下配置,根据自己的情况修改
// 基础url
const base_url = 'http://127.0.0.1:9501'
// 代理API前缀
const proxy_api = '/api'
7 存在兼容性问题的扩展
由于 Hyperf 基于 Swoole 协程实现,而 Swoole 4 带来的协程与不少扩展都仍存在兼容性的问题。 以下扩展(包括但不限于)都会造成一定的兼容性问题,不能与之共用或共存:
- xhprof
- xdebug
- blackfire
- trace
- uopz
演示图片
开发文档
后端文档:后端文档 | MineAdmin
前端文档:开发规范 | MineAdmin
此项目使用Apache 2.0开源协议,更多内容大家可自行前往阅读。