HUSTOJ随笔7-SAE部署
SAE(sina application engine) 是新浪的云计算平台,最大的特点是跟LAMP平台几乎无缝的兼容性。 因此在SAE上部署HUSTOJ的Web部分是完全没有问题的,只需在db_info.inc.php设置 static ?$OJ_SAE=true; 然后参考 http://code.google.com/p/hustoj/wiki/HTTPJudge 进行judged的配置。 这里需要说明的是,新浪云平台具有较多的安全限制,支持的计算平台仅限web,并不能支持编译、运行、监控等操作。 所以,必须另行架设判题机运行judged/judge_client,但是由于SAE已经提供了公网Web出口,所以对于没有自己互联网出口的学校来说就是非常难得的资源。 而judged可以在内网运行,甚至可以不必24小时在线,比如只在8-16点(上班时间)在线,老师可以用自己办公室的机器上装个虚拟机的方式来解决。 实际上HTTPJudge的运行机制正是为SAE量身打造的。 因为传统的judged必须连接mysql来轮询和完成任务,而SAE没有提供外部网络连接mysql的机制,这就逼迫我思考如何让judged能够连接到SAE的数据库上去。 因为SAE唯一的对外出口就是Web(HTTP),因此在HTTP基础上实现一套判题任务的查询、更新机制就是最直接的答案。 当然有很多标准可以采纳,如WebService,XML-RPC,json-rpc等,但是由于我比较懒、也比较笨,所以就自行定制了一套最为简化的实现,类似Unix的管道流的文本界面。 此外,由于SAE不支持文件操作API,所以类似图片上传等功能都不能正常运行。有能力的用户可以自行修改代码,使用SAE的Storage功能实现模拟文件操作。 没有开发能力的用户可以在本地搭建完全相同题库和数据的OJ,在加题后采用SAE的SVN界面进行上传同步,可以最大化减少SAE的维护工作量。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |