# huicmf_webman **Repository Path**: vipnetwork/huicmf_webman ## Basic Information - **Project Name**: huicmf_webman - **Description**: Huicmf基于 webman开发的 后台权限管理系统 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 25 - **Created**: 2023-05-19 - **Last Updated**: 2023-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于webman+mysql 开发的php后台权限管理系统 # huicmf_webman 支持一键CURD ### 项目地址: #### **【gitee】** https://gitee.com/xianrenqh/huicmf_webman ### 使用文档地址: [https://gitee.com/xianrenqh/huicmf_webman/wikis/pages](https://gitee.com/xianrenqh/huicmf_webman/wikis/pages) --- ## 后台演示 http://webman.xiaohuihui.net.cn/admin 账号:admin 密码:admin888 ## 运行环境~~!: > php: 8.0.2+ > > mysql: 5.5+ > > Redis ## 备注: > ## 后台登录做了登录错误安全限制: 1. 5分钟内连续错误超过5次,限制此ip再次访问。(需要在后台设置里(或者数据库中)解除ip) 2. N分钟内连续N次输入密码错误,此账号将禁止登录。(过去N分钟之后才能再次登录) 3. 2中的N可以在环境变量.env中设置(默认均为10) ## 安装: ### 1.首先clone代码到项目目录: ~~~ https://gitee.com/xianrenqh/huicmf_webman.git ~~~ ### 2.在项目根目录执行: > composer update ### 3.导入并配置数据库: > 导入数据并配置数据库文件方式有2种。任意一种即可。 #### 1.命令行导入 在命令输入以下命令并执行: ~~~ # 简洁命令 php webman config:mysql --u root --p 123456 --d databasename ~~~ ~~~ #完整命令 php webman config:mysql --h 127.0.0.1 --port 3306 --u root --p 123456 --d databasename --in 0 ~~~ **命令行中参数意义:** | 参数 | 是否必填 | 默认值 | 描述 | |--------| ------------ | ------------ |---------------| | --h | 否 | 127.0.0.1 | host地址 | | --port | 否 | 3306 | 端口号 | | --u | 是 | | 数据库用户名 | | --p | 是 | | 数据库密码 | | --d | 是 | | 数据库名 | | --in | 否 | 0 | 是否强制安装数据库:是=1 | **注意:** 1. 如果数据库已存在,同时想要强制(覆盖)安装,请携带参数 "--in 1" 。否则请更换数据库名 2. 如果地址和端口一致,可以不写其参数 3. 如果携带参数,那么参数后面的值必须存在。 4. 如果数据库的密码为空,此方法无法安装,原因同3。 #### 2.原始sql导入 > 1.根目录找到 install.sql 并导入数据库 > > 2.设置 config/thinkorm.php 文件中的数据库配置 > > 3.如果使用.env文件,请把根目录下.example.env重命名为:.env并设置.env中的数据库配置 > > 4.【注:】 如果使用.env配置数据库,则 config/thinkorm.php 文件的数据库配置项不生效。 ### 4.服务器放行端口 默认端口:8787 > **更改默认端口方法:** > > 如果使用了.env文件,请在env文件中更改端口【APP_PORT】 > >---- > >如果没有使用.env文件: > > 请在\config\server.php 文件中更改: > >'listen' => 'http://0.0.0.0:8787', ### 5.执行启动命令 (不知道命令的可以继续往下看) ### 6.愉快的访问后台吧: > http://127.0.0.1:8787/admin > > 用户名:admin > > 密码: 123456 > > ---- ### 7.配置伪静态(nginx转发[需要配置nginx反代]): ```nginx location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Connection ""; if (!-f $request_filename){ proxy_pass http://webman; } } ``` ### 8.Nginx反向代理 官方案例: ``` upstream webman { server 127.0.0.1:8787; keepalive 10240; } server { server_name 站点域名; listen 80; access_log off; root /your/webman/public; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Connection ""; if (!-f $request_filename){ proxy_pass http://webman; } } } ``` 自己整理案例: ``` upstream webman { server 127.0.0.1:8787; keepalive 10240; } server { listen 80; listen [::]:80; server_name webman.xiaohuihui.net; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/webman.xiaohuihui.net/public; access_log off; #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; #SSL-END #ERROR-PAGE-START 错误页配置,可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置,可以注释或修改 include enable-php-74.conf; #PHP-INFO-END #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效 include /www/server/panel/vhost/rewrite/webman.xiaohuihui.net.conf; #REWRITE-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #一键申请SSL证书验证目录相关设置 location ~ \.well-known{ allow all; } location /app { proxy_pass http://127.0.0.1:3131; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header X-Real-IP $remote_addr; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; # 这里是重点 proxy_pass http://webman; error_log /dev/null; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; # 这里是重点 proxy_pass http://webman; error_log /dev/null; access_log /dev/null; } } ``` 以上代码中, **_location ~_** 中的 一定要注意,如果没处理好这里, 可能会出现部分静态资源无法访问到情况 ### 8.配置网站的运行目录为:**public** ### 9.绑定域名 (不绑定域名请使用 ip+端口访问) ### 10.可以愉快的使用绑定的域名访问啦啦啦 ## 忘记后台密码 如果忘记密码,或者密码不对,请修改数据库表:cmf_admin password: 4d934790841a4d8575c21e86b5b3eb71 salt: VkMJ27 对应的明文密码为:123456 ## 启动方式(命令) ### windows开发环境 ``` php windows.php start ``` ### Linux生产环境 ``` php start.php start php start.php start -d ``` ### 平滑重启 ``` php start.php reload ``` ### 更改redis配置 如需更改redis配置,需要更改以下2个地方: (个人如果另行安装其他带有redis的插件的,需要另行更改其配置) 1. 环境变量.env文件对应的redis配置 2. webman-redis-queue配置: config/plugin/webman/redis-queue/redis.php > **注意:** > > 如果没有使用.env环境变量,则另需更改以下3个地方的配置 > 1. \config\redis.php > 2. \config\session.php > 3. \config\thinkcache.php # .env环境 > 请复制或者重命名一份.example.env 为 .evn文件。并编辑里面的数据库配置 > 如果是使用命令行安装的,则无需复制并编辑数据 # orm使用think的。 数据库链接配置文件在: > config\thinkorm.php # nginx代理 ## 伪静态 ``` location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Connection ""; if (!-f $request_filename){ proxy_pass http://webman; } } ``` 当webman需要直接提供外网访问时,建议在webman前增加一个nginx代理,这样有以下好处。 * 静态资源由nginx处理,让webman专注业务逻辑处理 * 让多个webman共用80、443端口,通过域名区分不同站点,实现单台服务器部署多个站点 * 能够实现php-fpm与webman架构共存 * nginx代理ssl实现https,更加简单高效 * 能够严格过滤外网一些不合法请求 * ``` upstream webman { server 127.0.0.1:8787; keepalive 10240; } server { server_name 站点域名; listen 80; root /your/webman/public; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; if (!-f $request_filename){ proxy_pass http://webman; } } } ``` ## 代码输出json数据 > 可以有以下2种方式: ### 方法1: ```php # 全局均可使用 return success_json(); return error_json(); ``` ### 方法2: ```php # 需要公公控制器先继承 \app\BaseController; # 然后引入 public function __construct() # 默认后台模块(admin)已继承,可直接使用。其他模块需要自行继承 return $this->success(); return $this->error(); ``` > error输出,可以在msg位置输出数组:['code'=>204,'msg'=>'error'],此时输出的json code值为对应的204 --- # huiCmf后台基本模块: 1. 管理员管理 2. 权限节点管理 3. 角色组管理 4. 后台菜单管理 5. 定时任务管理 6. 数据库管理 7. 支持一键CURD **【权限节点管理】** 使用的是控制器注解权限来增加(删除)权限节点 **【定时任务管理】** 定时插件默认关闭状态,如需启动,请在配置文件:config/plugin/xianrenqh/task/app.php 修改enable=true 定时任务,使用的是后台自带的定时任务,类似宝塔定时任务管理功能 ## 后台图片上传(选择图片框) 案例页面:【后台-上传测试页】 案例代码,请参考 **app/admin/view/upload_test.html** 文件 ## 上传使用说明: ### 单图上传: ```html
``` #### 参数说明: 1. 最顶部需要有class类名:huicmf-upload 2. input回调框的代码中,hui_img_preview 里面的值和id值需要相同 3. 点击按钮 a 标签 里面: 打开选择框属性:data-open-pic="{:__url('index/file_list',['type'=>'one','select_id'=>'avatar-select-input'])}",其中: **type=>'one'** 意思是:单张图 **select_id'** 意思是:需要传递回调数据表单的id字段 --- ### 多图上传: ```html