适用安装包:membercard-server(宝塔 / nginx / apache 通用)· 更新时间

一、环境要求

组件要求说明
PHP≥ 7.4(推荐 8.0–8.4)扩展:pdo(pdo_sqlite 或 pdo_mysql 二选一)、json、mbstring、fileinfo
Web 服务nginx / apache宝塔面板最简;无需任何 composer / node 构建
数据库SQLite(默认)或 MySQL ≥ 5.7SQLite 零配置;MySQL 由安装向导自动建库
磁盘≥ 100MB含 SQLite 库与上传文件
系统零外部依赖:无 composer、无 npm、无 CDN,全部资源本地化,内网/离线环境同样可用。

二、上传与解压

将安装包 membercard-server-v1.0.0.tar.gz 上传到服务器,解压到站点根目录(宝塔:网站 → 根目录)。解压后站点根应包含:

index.php  install.php  admin.html  admin/  assets/  site/  h5/
app/  config/  cli/  docs/  data/  uploads/  README.md
确保以下目录可写(宝塔默认 www 用户即可):data/、uploads/、config/

三、站点配置(二选一)

宝塔面板:网站 → PHP 版本选 7.4+;无需伪静态。仅建议在配置中追加以下保护规则(</server> 前的任意 location 区域):

location ~ ^/(app|config|cli|data)/ { return 404; }
location = /admin { return 301 /admin/; }
location = /h5   { return 301 /h5/; }
location ^~ /wxopen/ { rewrite ^/wxopen/(.*)$ /wxopen.php?appid=$1 last; }

nginx 原生:server 块中确保 index index.php index.html; 且 php 通过 fastcgi 处理,随后追加以上三行并 nginx -s reload。

Apache:无需额外配置(PHP 模块处理 .php;入口别名由前端控制器兜底,直接访问 /install.php)。若使用微信开放平台(第三方平台)功能,需加一行 RewriteRule ^wxopen/(.*)$ wxopen.php?appid=$1 [L,QSA]。

目录保护第一行必须配置:禁止 Web 直接访问 app/ config/ cli/ data/(应用与数据目录)。

四、运行安装向导

  1. 浏览器打开 http://你的域名/ → 自动跳转安装向导(或直接访问 /install.php)。
  2. 环境检测:确认全部通过(SQLite/MySQL 驱动二选一即可)。
  3. 数据库:
    • SQLite(默认):零配置,单文件库在 data/membercard.sqlite,适合单机与中小规模。
    • MySQL:填主机/端口/库名/账号密码,库不存在会自动创建(utf8mb4)。
  4. 管理员:设置平台管理员账号与密码(用于登录 /admin)。
  5. 演示数据:生产环境建议不勾选(勾选会写入演示商家/套餐/订单)。
  6. 点击「开始安装」→ 提示安装完成。
安装完成后系统会锁定向导(data/installed.lock)。建议手动删除站点根的 install.php。

五、安装完成后的入口

入口地址说明
官网http://你的域名/产品介绍 / 价格 / 海报下载 / 本教程
管理后台/admin平台管理员:商家/开关/分账/公告;商家管理员:套餐/订单/仓库/店员
H5 客户端/h5客户扫码进店、卡包、动态核销码
小程序开发者工具导入 miniprogram/改 config.js 的 BASE 为你的域名后编译上传

六、定时任务(生产必配)

脚本内容只填一行纯文本命令,两个常见坑:
① 多行粘贴 → bash 逐行执行报 xxx: command not found;
② 从微信/网页复制的命令可能被转成链接(带 http:// 前缀、空格变 %20)→ 报 No such file or directory。粘贴后请确认脚本内容以 /www/server/php/... 或 bash /www... 开头、无 http://、无 %20。

推荐方式(防呆包装,自动寻找 PHP 8.2/8.4,自动定位站点根与日志):

bash /www/wwwroot/你的站点/cli/cron.sh

原始方式(手动指定 PHP 8.2 解释器,整行):

/www/server/php/82/bin/php /www/wwwroot/你的站点/cli/cron.php >> /www/wwwroot/你的站点/data/logs/cron.log 2>&1

宝塔面板操作:计划任务 → 添加任务 → 任务类型「Shell 脚本」→ 执行周期「N 分钟 1 分钟」→ 脚本内容仅填上面其中一行(把「你的站点」替换为真实根目录路径)→ 保存后点「执行」测试一次。

不使用宝塔时,直接 crontab -e 添加同一行(crontab 里行首加 * * * * * )。

后台「概览 → 执行定时任务」按钮等价手动触发(分账即时生效)。日志见 data/logs/cron.log,正常输出 JSON。

七、验收清单

  1. / 打开官网;/admin 用管理员账号登录成功。
  2. 后台 → 商家管理 → 门店二维码:生成并下载 PNG,手机扫码能进店。
  3. /h5 登录(任意手机号)→ 扫门店码 → 套餐购买 → 模拟支付 → 卡包出现会员卡。
  4. 后台 → 台账 / 订单 / 分账单能看到对应数据;cron 日志正常滚动。
  5. 商家中心(我的 → 商家中心):提交申请 → 平台后台可见申请商家与执照。

八、常见问题

现象处理
打开是 404 / 无样式确认解压到了站点根;nginx 未加目录保护规则时不影响,/admin 与 /admin.html(旧地址,自动跳转)均可进入后台
安装向导提示目录不可写chown -R www:www 站点根 或 chmod -R 775 data uploads config
支付报“平台未配置服务商参数”属预期:需在平台后台为商家绑定子商户号并接入微信服务商(见 README「微信真实接入」)
忘记管理员密码删除 data/installed.lock 后重跑安装向导,或用 cli:php cli/reset_admin.php 新密码(如有)
想清空演示/测试数据,回到干净生产状态执行 php cli/reset_production.php --yes(保留平台管理员、卡类开关、公告;清空商家/套餐/订单/客户等全部业务数据)
想迁移服务器整站目录拷贝即走(SQLite);MySQL 用户导出导入数据库后修改 config/config.local.php

更多细节见包内 README.md。联系平台客服:热线 18920190745 · 微信 ison_cc