在 Exam++ 考试系统第一版的基础上,我们对 ExamStack V2.0 进行了大量代码重构,同时也对数据模型做了部分调整。为了减小学员考试交卷时大量并发带来的系统风险,我们尝试采用成熟的消息队列框架RabbitMQ来解决这一问题,因此我们的数据库以及系统的架构同第一版相比,发生了不小的变化。
Management.war
和 Portal.war
需要部署在 同一个目录
下。
ExamStack V2.0增加了 培训功能
,因为需要保存培训材料,所以请留出足够的磁盘空间(以实际需要为准)。
要保证RabbitMQ服务状态为 运行状态
。
要保证ScoreMarker状态为 运行状态
,同时ScoreMarker调用服务地址要配置正确。
操作系统:Linux、Windows
内存:最低2G,推荐8G
Tomcat 8
RabbitMQ
MySql 5.0以上
在MySql中新建一个数据库 examstack
,字符集使用 utf8 -- UTF-8 Unicode
使用我们提供的 examstack.sql
还原 examstack
设置好对应的访问权限
安装最新版本的RabbitMQ,具体安装方法,在网络上可以找到很多。
配置
将 Management.war
和 Portal.war
放到Tomcat应用程序目录( webapps
)下。
启动Tomcat,webapps目录下会生成两个文件夹( Management
和 Portal
)。
分别进入到 Management/WEB-INF/Spring
和 Portal/WEB-INF/Spring
下修改 root-context.xml
文件,将数据库地址、用户名和密码修改成正确的内容。修改完成后重启tomcat服务器。
需要修改的内容如下:
<property name="jdbcUrl" value="jdbc:mysql:/*.*.*.*:3306/examstack?useUnicode=true&characterEncoding=UTF-8" /> <property name="user" value="root" /> <property name="password" value="***" />
访问 http://localhost:8080/Management
和 http://localhost:8080/Portal
可以进入到管理后台页面和学员页面,并可以正常登陆,则应用配置成功。
注意:*在完成这一步后学员考试交卷无法完成,需要部署 ScoreMarker
。*
部署ScoreMarker
Linux下 解压scoreMarker到/opt/目录。 确认config/scoremarker.properties文件配置正确。 拷贝scoremarker 执行脚本到init.d目录下并检查脚本中的配置。
Windows下 解压scoreMarker到任意目录。 确认config/scoremarker.properties文件配置正确。 修改installService.bat中APP_HOME为scoreMarker目录。 运行installService.bat后启动服务ScoreMarkerService服务。
Cause:org.springframework.jdbc.CannotGetJdbcConnectionException:Could not get JDBC Connection;nested exception is java.sql.SQLException:Access denied for user 'root'@'localhost'
请检查数据库连接字符串是否正确,同时检查数据库名、用户名和密码是否设置正确。
RabbitMQ
没有启动会导致应用程序连接 RabbitMQ
失败
请检查 RabbitMQ
服务是否启动。
交卷成功后,学员考试状态会修改成 已交卷
或者 已阅卷
,如果在提示“交卷成功”后没有发生任何变化,证明ScoreMarker没有正常启动或者ScoreMarker调用接口失败。
请检查ScoreMarker是否启动。同时请保证ScoreMarker能调用到Management提供的接口,这一点在ScoreMarker部署中已经说明。
我们在测试过程中发现,内存不足的情况下(我们使用的是1G内存),RabbitMQ、MySql、ScoreMarker经常被Kill,而且无法启动,查看日志会发现提示内存不够。
查看下日志,如果是内存不够的原因,那就赶紧加内存吧。为了保证系统正常运行,内存不能低于2G。