如何用TCExam十分钟部署一套免费开源在线考试系统?完整入门指南
【免费下载链接】tcexamTCExam is a CBA (Computer-Based Assessment) system (e-exam, CBT - Computer Based Testing) for universities, schools and companies, that enables educators and trainers to author, schedule, deliver, and report on surveys, quizzes, tests and exams.项目地址: https://gitcode.com/gh_mirrors/tc/tcexam
TCExam 是一款免费开源的在线考试系统(CBA,Computer-Based Assessment),十分钟就能在你的服务器上跑起来。它帮助教师、培训机构和企业完成考试、测验与问卷的创建、排期、发放、判卷和成绩统计,支持 MySQL 与 PostgreSQL,当前版本 17.2.2。这篇文章带你从零了解 TCExam 能做什么,并给出 Docker 一键部署和手动安装两条完整路径。
初识TCExam:一套在线考试系统能做什么
TCExam 的工作方式可以理解为"管理端出题排考,考生端答题交卷,系统自动判分出报表"。它的源码分成三个职责清晰的目录,这也是它好维护、好定制的原因:
admin/管理后台:建题库、建考试、导入用户、监控在线考生、导出成绩、备份恢复public/考生端:登录、开考、答题、查成绩,界面遵循 WCAG 2.1 AA 无障碍标准shared/共享代码与配置:数据库连接、邮件、单点登录、26 种语言的翻译资源都放在这里
它能覆盖的典型场景包括:客观题自动评分、按考生随机组卷(每人一份不同的试卷和选项顺序,从机制上压低抄袭空间)、支持 LaTeX/MathML 公式和音视频多媒体题目、结果以 TSV/XML/PDF 标准格式导出、对接 LDAP/RADIUS/CAS 做单点登录。特别值得一提的是纸质混合场景:TCExam 可以生成可打印的 PDF 试卷和答题卡,扫描回来后通过 OMR(光学标记识别)自动判分入库,线上线下两套考试流程用同一套系统管理。
🐳 TCExam 快速部署:Docker 一条命令跑通考试环境
如果你只是先评估功能、搭一个演示环境,官方推荐的 Docker 方案最省心。前提只有一条:装了 Compose 插件的 Docker。
第一步,把源码克隆到本地:
git clone https://gitcode.com/gh_mirrors/tc/tcexam第二步,在项目目录下启动完整栈(Apache + PHP 8.4 + MariaDB):
docker compose up --build这条命令比传统安装省事的地方在于:容器启动时会自动运行非交互式安装器install/install_cli.php完成建库和配置,不需要浏览器安装步骤。启动完成后访问http://localhost:8080/admin/code/,用默认账号admin/1234登录即可开始配置题库。
两个注意点:一是数据库、PDF 字体、缓存和已安装的配置都存在命名卷里,docker compose down再up数据不会丢;要彻底重来需执行docker compose down -v。二是首次启动会在后台生成 PDF 字体,稍等片刻 PDF 导出功能才可用。想换 PostgreSQL,把 compose 文件里的db服务换成 postgres 镜像,并给app服务加上TCEXAM_DB_TYPE=POSTGRESQL、TCEXAM_DB_PORT=5432两个环境变量即可。
⚙️ TCExam 手动安装教程:四步上线生产环境
正式部署到自己的 PHP 环境,按下面四步走。
第一步,准备基础软件栈:PHP 8.2 及以上(8.2/8.3/8.4 均经过测试),必需扩展包括mysqli(或pgsql)、gd、intl、bcmath、mbstring、zip、curl、xml、openssl、posix;数据库支持 MySQL/MariaDB、PostgreSQL、Oracle 三种;Web 服务器推荐 Apache + mod_php,因为项目自带.htaccess访问控制。
第二步,安装 Composer 依赖并生成 PDF 字体(composer install的 post-install 钩子会自动完成字体生成):
composer install可选再执行make lang预构建多语言缓存,不执行则首次请求时自动生成。
第三步,把 Web 根目录指向项目目录,并确保cache/、install/、admin/backup/以及三个config/目录对 Web 用户可写——漏掉这一步是最常见的安装失败原因。
第四步,在浏览器打开install/运行图形安装向导,或设置好TCEXAM_DB_*环境变量后执行php install/install_cli.php走命令行。两种方式的收尾动作相同:安装完成后删除整个install/目录,并立即处理默认账号。
✍️ TCExam 核心功能演示:从出题到成绩报表
建题库与导入题目
管理后台的题库模块是日常工作入口。在admin/code/tce_edit_question.php里逐题编辑,题型涵盖单选、多选、判断、填空等;已有题库时,用admin/code/tce_import_questions.php批量导入更高效。题目内容用 TCExam 自己的标记语言(tcecode)书写,可以直接嵌入图片、音视频和数学公式。
创建考试与随机防作弊
在admin/code/tce_edit_test.php中把题目组织成考试,设置开放时间段、考试时长和可访问用户组。开启"unique test"后,系统会为每位考生独立抽题、乱序题目和选项——这是它区别于普通问卷工具的核心能力。考生从public/code/tce_test_execute.php进入考试,界面带实时计时和题目导航,中途可标记、可修改答案。
纸质考试与 OMR 自动判分
需要线下考试时,TCExam 可以导出带答题卡的 PDF 试卷;回收后扫描上传,OMR 模块(需服务器安装 zbarimg)自动识别填涂结果并入库判分,对应入口在admin/code/tce_import_omr_answers.php。
成绩统计与多格式导出
客观题交卷即出分,考生可以当场看到结果。管理员端提供带筛选条件的成绩页和统计索引,报表可以导出为 XML、TSV 或 PDF,分别对应tce_xml_results.php、tce_tsv_result_allusers.php、tce_pdf_results.php;配置好 SMTP 后还能通过tce_email_results.php把成绩邮件发给考生。
🔒 生产上线避坑清单:TCExam 安全与配置要点
上线前建议按顺序核对这几项,都是官方文档明确要求的:
- 删除
install/目录。安装器留在服务器上等于留了个后门,官方将其列为必做项。 - 换掉默认管理员。用
admin/1234登录后先创建一个 10 级新管理员账号,然后删除默认admin用户,而不是只改密码。 - 确认可写权限只授予前面提到的几个目录,其余保持只读。
- 按需配置扩展能力:SMTP 邮件在
shared/config/tce_email_config.php,CAS/LDAP/RADIUS 单点登录在shared/config/下同名配置文件中,LaTeX 渲染路径在shared/config/tce_latex.php(服务端需另装 LaTeX 与 ImageMagick)。 - 安全漏洞不要公开发 issue,按
SECURITY.md的渠道报告。
日常运维上,管理后台自带数据库备份入口(admin/code/tce_edit_backup.php),建议配合定期导出shared/config/、admin/config/、public/config/三份配置和上传目录,组成完整的恢复方案。
跑通最小闭环只需要三天内能做的事:Docker 起环境、建一个 20 题的小题库、开一场限时考试让同事作答、导出一次 PDF 报表。确认这些流程符合你的教学场景后,再按上面的清单加固配置、接入单点登录,最后用备份脚本把数据保护起来——这三步做完,这套系统就可以放心承载正式考试了。
【免费下载链接】tcexamTCExam is a CBA (Computer-Based Assessment) system (e-exam, CBT - Computer Based Testing) for universities, schools and companies, that enables educators and trainers to author, schedule, deliver, and report on surveys, quizzes, tests and exams.项目地址: https://gitcode.com/gh_mirrors/tc/tcexam
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考