☰
TCExam在线考试系统:从零到一的企业级部署与配置指南
2026/10/16 3:07:20 网站建设 项目流程

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是一款功能强大的开源计算机化考试系统,专为教育机构、企业和培训中心提供完整的在线考试解决方案。作为一款基于PHP的Web应用程序,TCExam支持MySQL、PostgreSQL和Oracle数据库,具备高度可配置性和国际化的特点,能够满足各种规模的考试需求。

核心概念与架构设计

TCExam采用分层架构设计,将管理员后台、考生前端和共享资源分离,确保了系统的安全性和可维护性。系统支持多语言、无障碍访问、多种认证方式以及丰富的报表功能。

系统架构概览

TCExam采用清晰的三层架构设计:

TCExam系统架构 ├── 管理员界面 (admin/) │ ├── 考试管理 │ ├── 用户管理 │ ├── 题库管理 │ └── 报表统计 ├── 考生界面 (public/) │ ├── 考试执行 │ ├── 成绩查询 │ └── 个人信息 └── 共享资源 (shared/) ├── 核心库文件 ├── 配置模板 └── 公共函数

要点提示:这种分离架构允许独立部署管理员和考生界面,提高了系统的安全性。

关键技术特性

  • 多数据库支持:原生支持MySQL、PostgreSQL和Oracle
  • 国际化支持:基于TMX标准的26种语言翻译
  • 无插件设计:纯Web界面,无需客户端安装额外软件
  • 无障碍访问:遵循WCAG 2.1 AA标准,支持屏幕阅读器
  • 多种认证方式:支持LDAP、RADIUS、CAS单点登录

环境准备与系统要求

基础环境要求

在部署TCExam之前,请确保服务器满足以下最低要求:

组件最低版本推荐版本
PHP8.2+8.4+
Web服务器Apache 2.4+Apache 2.4+
数据库MySQL 5.7+MySQL 8.0+
内存512MB2GB+
存储100MB1GB+

PHP扩展依赖

TCExam需要以下PHP扩展才能正常运行:

# 必需扩展 mysqli 或 pgsql # 数据库连接 gd # 图像处理 intl # 国际化支持 bcmath # 高精度数学计算 mbstring # 多字节字符串处理 zip # 压缩解压 curl # 网络请求 xml # XML处理 openssl # 加密传输 posix # 进程控制 # Oracle数据库额外需要 oci8 # Oracle数据库连接

最佳实践:使用PHP 8.4或更高版本,以获得更好的性能和安全性。

推荐部署环境

  • 开发环境:Docker Compose(快速启动)
  • 测试环境:XAMPP / WAMP / MAMP
  • 生产环境:Linux + Apache/Nginx + MySQL/MariaDB

实战部署方案

方案一:Docker快速部署(推荐用于评估)

对于快速评估和开发环境,Docker是最佳选择:

# 克隆项目仓库 git clone https://gitcode.com/gh_mirrors/tc/tcexam # 进入项目目录 cd tcexam # 启动完整环境 make up # 或使用docker compose docker compose up --build

图:TCExam系统标识,代表考试测试功能

Docker部署会自动完成以下操作:

  1. 启动Apache + PHP 8.4容器
  2. 启动MariaDB数据库容器
  3. 运行非交互式安装脚本
  4. 生成PDF字体和翻译缓存
  5. 创建默认管理员账户

访问地址:http://localhost:8080/默认登录:admin/code/(用户名:admin,密码:1234)

安全提醒:首次登录后立即修改默认密码!

方案二:手动生产环境部署

对于生产环境,建议采用手动部署以获得更好的控制和优化:

步骤1:环境准备
# 安装PHP及相关扩展(Ubuntu/Debian示例) sudo apt update sudo apt install php8.4 php8.4-mysql php8.4-gd php8.4-intl \ php8.4-bcmath php8.4-mbstring php8.4-zip \ php8.4-curl php8.4-xml php8.4-openssl \ php8.4-posix composer apache2 mysql-server
步骤2:项目部署
# 克隆项目 git clone https://gitcode.com/gh_mirrors/tc/tcexam /var/www/tcexam # 设置目录权限 cd /var/www/tcexam sudo chown -R www-data:www-data . sudo chmod -R 755 . sudo chmod -R 777 cache install admin/backup # 配置目录可写权限 sudo chmod 777 admin/config public/config shared/config
步骤3:依赖安装
# 安装PHP依赖 composer install --no-dev --optimize-autoloader # 生成PDF字体 make fonts # 预编译翻译缓存(可选) make lang
步骤4:Web服务器配置

创建Apache虚拟主机配置/etc/apache2/sites-available/tcexam.conf:

<VirtualHost *:80> ServerName tcexam.yourdomain.com DocumentRoot /var/www/tcexam <Directory /var/www/tcexam> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/tcexam_error.log CustomLog ${APACHE_LOG_DIR}/tcexam_access.log combined </VirtualHost>

启用配置并重启Apache:

sudo a2ensite tcexam.conf sudo a2enmod rewrite sudo systemctl restart apache2

核心配置指南

数据库配置

编辑shared/config/tce_db_config.php配置文件:

// 数据库类型:MYSQL, POSTGRESQL, ORACLE define('K_DATABASE_TYPE', 'MYSQL'); // 数据库连接信息 define('K_DATABASE_HOST', 'localhost'); define('K_DATABASE_PORT', '3306'); define('K_DATABASE_NAME', 'tcexam_db'); define('K_DATABASE_USER_NAME', 'tcexam_user'); define('K_DATABASE_USER_PASSWORD', 'secure_password_here'); // 数据库字符集 define('K_DATABASE_CHARSET', 'utf8mb4');

最佳实践:为TCExam创建专用数据库用户,并限制其权限。

路径配置

编辑shared/config/tce_paths.php文件:

// 系统URL路径 define('K_PATH_HOST', 'https://tcexam.yourdomain.com'); define('K_PATH_MAIN', '/var/www/tcexam/'); define('K_PATH_URL', K_PATH_HOST . '/'); // 缓存和临时目录 define('K_PATH_CACHE', K_PATH_MAIN . 'cache/'); define('K_PATH_TEMP', K_PATH_MAIN . 'tmp/');

邮件系统配置

配置shared/config/tce_email_config.php以启用邮件通知功能:

// 启用邮件功能 define('K_EMAIL_ENABLED', true); // SMTP服务器配置 define('K_SMTP_HOST', 'smtp.gmail.com'); define('K_SMTP_PORT', 587); define('K_SMTP_AUTH', true); define('K_SMTP_SECURE', 'tls'); define('K_SMTP_USER', 'your-email@gmail.com'); define('K_SMTP_PASS', 'your-app-password'); // 发件人信息 define('K_EMAIL_FROM_NAME', 'TCExam System'); define('K_EMAIL_FROM_ADDRESS', 'noreply@yourdomain.com');

高级功能配置

LaTeX数学公式支持

要启用LaTeX公式渲染,需要安装相关依赖并配置shared/config/tce_latex.php:

# 安装LaTeX和相关工具(Ubuntu/Debian) sudo apt install texlive-latex-base texlive-latex-extra \ imagemagick ghostscript

配置文件设置:

// 启用LaTeX支持 define('K_LATEX_ENABLED', true); // LaTeX二进制路径 define('K_LATEX_PATH', '/usr/bin/latex'); define('K_DVIPNG_PATH', '/usr/bin/dvipng'); define('K_CONVERT_PATH', '/usr/bin/convert');

单点登录集成

CAS认证配置

编辑shared/config/tce_cas.php:

// 启用CAS认证 define('K_CAS_ENABLED', true); // CAS服务器配置 define('K_CAS_HOST', 'cas.yourdomain.com'); define('K_CAS_PORT', 443); define('K_CAS_CONTEXT', '/cas'); define('K_CAS_CA_CERT', '/path/to/cas_cert.pem');
LDAP集成配置

配置shared/config/tce_ldap.php:

// 启用LDAP认证 define('K_LDAP_ENABLED', true); // LDAP服务器配置 define('K_LDAP_HOST', 'ldap.yourdomain.com'); define('K_LDAP_PORT', 389); define('K_LDAP_BASE_DN', 'ou=users,dc=yourdomain,dc=com'); define('K_LDAP_BIND_DN', 'cn=admin,dc=yourdomain,dc=com'); define('K_LDAP_BIND_PASSWORD', 'ldap_password');

OMR光学标记识别

TCExam支持从纸质答题卡自动导入答案,需要安装zbar工具:

# 安装zbar(Ubuntu/Debian) sudo apt install zbar-tools

配置OMR功能:

// OMR配置 define('K_OMR_ENABLED', true); define('K_OMR_ZBARIMG_PATH', '/usr/bin/zbarimg');

系统运维管理

备份策略

TCExam提供了完整的备份功能,建议定期执行以下操作:

数据库备份
# MySQL备份示例 mysqldump -u tcexam_user -p tcexam_db > tcexam_backup_$(date +%Y%m%d).sql # 使用系统内置备份功能 # 访问:admin/code/tce_edit_backup.php
文件备份
# 备份配置文件和上传的文件 tar -czf tcexam_files_$(date +%Y%m%d).tar.gz \ /var/www/tcexam/shared/config/ \ /var/www/tcexam/admin/backup/ \ /var/www/tcexam/cache/

监控与日志

启用系统日志

编辑shared/config/tce_config.php:

// 启用详细日志 define('K_ENABLE_SYSLOG', true); define('K_SYSLOG_FACILITY', LOG_LOCAL0); define('K_LOG_LEVEL', 'DEBUG');
关键监控指标
  1. 数据库连接数:监控MySQL连接池使用情况
  2. PHP内存使用:确保memory_limit足够
  3. 磁盘空间:定期清理cache目录
  4. 响应时间:监控API响应时间

性能优化

PHP配置优化

编辑/etc/php/8.4/apache2/php.ini:

; 内存限制 memory_limit = 256M ; 执行时间限制 max_execution_time = 300 ; 文件上传限制 upload_max_filesize = 50M post_max_size = 55M ; OPcache优化 opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=2
数据库优化
-- 为常用查询字段创建索引 CREATE INDEX idx_test_user_id ON tce_tests (test_user_id); CREATE INDEX idx_question_subject_id ON tce_questions (question_subject_id); CREATE INDEX idx_answer_question_id ON tce_answers (answer_question_id); -- 定期优化表 OPTIMIZE TABLE tce_tests, tce_questions, tce_answers;
Web服务器优化
# Apache配置优化 <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" </IfModule> <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript </IfModule>

故障排除指南

常见问题与解决方案

问题1:安装向导无法访问

症状:访问安装页面时出现404错误或空白页面

解决方案:

  1. 检查Web服务器配置是否正确
  2. 验证install/目录是否存在且可读
  3. 检查PHP是否已正确安装并启用必要扩展
  4. 查看Apache错误日志:tail -f /var/log/apache2/error.log
问题2:数据库连接失败

症状:安装过程中出现数据库连接错误

解决方案:

  1. 验证数据库服务是否运行:systemctl status mysql
  2. 检查数据库用户权限:
    GRANT ALL PRIVILEGES ON tcexam_db.* TO 'tcexam_user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
  3. 确认防火墙设置:sudo ufw allow 3306
问题3:LaTeX公式无法显示

症状:数学公式显示为代码或空白

解决方案:

  1. 检查LaTeX是否安装:which latex
  2. 验证ImageMagick和Ghostscript:
    convert --version gs --version
  3. 检查文件权限:确保Web用户有权执行相关命令
问题4:邮件发送失败

症状:用户注册或密码重置邮件无法发送

解决方案:

  1. 检查SMTP配置是否正确
  2. 验证防火墙是否允许出站SMTP连接
  3. 查看PHP错误日志:tail -f /var/log/php8.4-fpm.log
  4. 测试邮件功能:
    // 在临时文件中测试 <?php require_once 'shared/code/tce_class_mailer.php'; $mail = new PHPMailer(true); // 配置和发送测试邮件

日志分析

TCExam系统日志位于以下位置:

# Apache访问日志 /var/log/apache2/tcexam_access.log # Apache错误日志 /var/log/apache2/tcexam_error.log # PHP错误日志 /var/log/php8.4-fpm.log # 系统日志 journalctl -u apache2 --since "1 hour ago"

安全加固指南

基础安全措施

  1. 删除安装目录:

    rm -rf /var/www/tcexam/install/
  2. 修改默认密码:首次登录后立即修改admin用户密码

  3. 创建新管理员:创建新的level-10管理员账户,删除默认admin账户

  4. 文件权限设置:

    # 设置正确权限 find /var/www/tcexam -type f -exec chmod 644 {} \; find /var/www/tcexam -type d -exec chmod 755 {} \; # 设置特殊目录权限 chmod 777 /var/www/tcexam/cache chmod 777 /var/www/tcexam/admin/backup

网络安全配置

HTTPS强制启用

配置Apache强制使用HTTPS:

<VirtualHost *:80> ServerName tcexam.yourdomain.com Redirect permanent / https://tcexam.yourdomain.com/ </VirtualHost> <VirtualHost *:443> ServerName tcexam.yourdomain.com # SSL配置 SSLEngine on SSLCertificateFile /etc/ssl/certs/tcexam.crt SSLCertificateKeyFile /etc/ssl/private/tcexam.key # 其他配置... </VirtualHost>
安全头设置

在Apache配置中添加安全头:

Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "SAMEORIGIN" Header always set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Content-Security-Policy "default-src 'self'"

数据库安全

  1. 使用专用数据库用户:避免使用root账户
  2. 限制数据库权限:仅授予必要权限
  3. 定期备份:设置自动备份策略
  4. 监控异常查询:启用数据库审计日志

定期安全检查清单

每月执行以下安全检查:

  • 更新系统补丁:sudo apt update && sudo apt upgrade
  • 检查文件权限:find /var/www/tcexam -perm -o=w -type f
  • 审查日志文件:检查异常访问模式
  • 验证备份完整性:测试恢复流程
  • 更新依赖:composer update --no-dev

性能调优最佳实践

缓存策略优化

TCExam使用文件缓存系统,可通过以下方式优化:

  1. 启用OPcache:显著提升PHP性能
  2. 配置浏览器缓存:减少静态资源请求
  3. 使用CDN:加速全球访问速度
  4. 数据库查询缓存:优化频繁查询

并发处理优化

对于高并发考试场景:

// 调整PHP-FPM配置 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 // 调整MySQL连接数 max_connections = 200 thread_cache_size = 8

监控指标

建立监控仪表板,关注以下关键指标:

  1. 响应时间:API平均响应时间 < 500ms
  2. 错误率:HTTP错误率 < 0.1%
  3. 并发用户数:实时在线用户数量
  4. 数据库负载:连接数、查询速度
  5. 系统资源:CPU、内存、磁盘使用率

升级与维护

版本升级流程

  1. 备份当前系统:

    # 备份数据库 mysqldump -u user -p tcexam_db > backup_before_upgrade.sql # 备份配置文件 cp -r /var/www/tcexam/shared/config /backup/config_backup
  2. 下载新版本:

    cd /var/www mv tcexam tcexam_old git clone https://gitcode.com/gh_mirrors/tc/tcexam
  3. 恢复配置:

    cp -r /backup/config_backup/* /var/www/tcexam/shared/config/ cp /var/www/tcexam_old/cache/lang/* /var/www/tcexam/cache/lang/ 2>/dev/null || true
  4. 更新依赖:

    cd /var/www/tcexam composer install --no-dev --optimize-autoloader make fonts
  5. 运行数据库升级脚本:

    # 根据版本号执行相应升级脚本 mysql -u user -p tcexam_db < install/upgrade/mysql/mysql_db_upgrade_*.sql
  6. 测试验证:

    • 检查所有功能是否正常
    • 验证数据完整性
    • 测试性能表现

定期维护任务

任务频率操作说明
数据库优化每周OPTIMIZE TABLE主要表
日志清理每月清理过期日志文件
备份验证每月测试备份恢复流程
安全扫描每季度漏洞扫描和修复
性能评估每半年系统性能基准测试

总结

TCExam作为一款成熟的开源在线考试系统,提供了完整的考试管理解决方案。通过本文的部署指南和配置说明,您可以快速搭建一个稳定、安全、高性能的考试平台。

关键要点回顾:

  1. 架构清晰:分离的管理员和考生界面确保安全性
  2. 部署灵活:支持Docker快速部署和手动生产部署
  3. 功能丰富:支持多语言、无障碍访问、多种认证方式
  4. 扩展性强:可通过配置集成LaTeX、LDAP、CAS等高级功能
  5. 维护方便:提供完整的备份、监控和升级方案

遵循本文的最佳实践,您可以建立一个满足企业级需求的在线考试系统,为教育机构、培训中心和企业提供可靠的考试服务。

官方文档:doc/INSTALL.md安装手册:install/README.md升级指南:doc/UPGRADE.md

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询