2026-08-24 · 建站运维
背景:为什么需要一个对外工单系统
本站点群此前已有禅道(内部项目管理),但对外缺少一个「客户/访客提交问题」的入口。MantisBT(开源缺陷跟踪系统)正好补位:访客无需注册即可匿名提交工单,团队在后台处理,邮件实时通知。2026-08-24 完成安装部署,现正式上线:https://support.1dao.cc
架构总览
| 项 | 方案 |
|---|---|
| 域名 | support.1dao.cc(Let's Encrypt 独立证书) |
| 版本 | MantisBT 2.28.0(GitHub release,ghfast.top 加速下载) |
| 技术栈 | PHP 8.4-FPM 独立池 + MariaDB(库 mantis)+ nginx |
| 部署 | Gitee 私有仓 ccoad1-mantis → walle 发布系统(项目 9),与全站 8 个站点统一架构 |
| 数据 | 代码在 Gitee;配置/附件/缓存存 /var/www/mantis-data,发布不覆盖 |
| 邮件 | 163 SMTP 发送,工单提交/变更实时通知管理员 |
安装要点
- PHP 8.4 兼容性:509 个 PHP 文件语法全过、无隐式可空参数、无需补丁——比此前 CRMEB(128 个文件补丁)省事得多,说明新版开源项目对 PHP 8.4 已友好。
- vendor 依赖入库:release 压缩包不含 composer 依赖,需
composer install(阿里云镜像)后整体入库——走 walle 部署的 PHP 应用必须如此,部署机不跑 composer。 - 安装向导自动化:playwright 无头浏览器填写数据库配置,全程脚本化。
- 默认管理员是 administrator,初始密码 root——上线第一件事改强密码。
配置要点
- 注册 + 匿名双通道:开放注册(邮箱确认激活 + 图像验证码防垃圾),注册用户可跟踪工单收通知;同时保留匿名提交,访客零门槛。
- 中文界面:默认语言 chinese_simplified。
- 邮件通知:163 SMTP(发件显示名 1dao.cc,规避 QQ 邮箱拦截);工单提交时通知报告人/处理人/管理员组。
- 项目:「壹道技术支持」,公开可见。
安全加固
- nginx 锁定 /admin/ 目录(安装脚本 403,升级时临时放开)
- 工单提交 3 次/分钟、登录 10 次/分钟限流(超限 503)
- 配置目录 /config/ 禁止访问;.git/.sql/.bak/.md/.txt 等一律拒绝
- 附件上传禁用危险扩展名(php/html/svg/js/exe 等),附件存数据库、强制下载
- 会话 Cookie Secure+HttpOnly;display_errors/expose_php 关闭;安全响应头齐全
踩坑清单(最有价值的部分)
- PHP-FPM realpath 缓存:walle 部署切换符号链接后,Worker 进程仍执行旧 release 代码——必须
systemctl reload php8.4-fpm。全站 walle 站点通用坑。 - 安装向导的 Admin 字段是 MySQL 建库账号,不是应用管理员;库已建好时填应用库账号即可。
- config/ 目录不存在导致配置写不进:MantisBT 2.28 配置在 config/config_inc.php,需手动建目录并按安装页提示的加密盐手写。
- 匿名登录 cookie_error:anonymous 用户的 cookie_string 字段为空导致会话校验失败,需生成随机串。
- walle post_release 多行命令被转 &&:单条失败整链中断,容错用
|| true。 - 管理员邮箱需显式设置,否则收不到工单通知邮件。
使用方式
- 访客:https://support.1dao.cc → 注册账号(邮箱验证激活)后登录提交,可跟踪工单、接收状态通知;或直接匿名提交(免注册)
- 注册流程:登录页「注册一个新帐号」→ 填用户名+邮箱 → 收确认邮件点链接激活 → 设置密码 → 登录
- 管理员:登录后台处理工单、分配、回复、变更状态;邮件实时通知
- 日常维护:改代码走 /root/worksrc/mantis → Gitee → walle 部署;改配置改数据目录 config_inc.php
完整安装实录(含全部命令与回滚方式)见 ccoad1-infra 文档:docs/mantis-v1/install/manual/mantis-install.md
文章导出
生成预览中...