写作初衷
最近一段时间一直在尝试部署bnuoj的开源项目,期间遇到了很多问题(作为一个以前从未接触过php以及sql的人. 已经料到会遇到很多问题),并通过各种途径解决。在此记录一下遇到的问题和解决方案,以便以后查看。感谢bnuoj开源项目的作者们。
零
bnuoj是用php写成的,前端bootstrap,数据库用的ezsql的mysql实现。 我们最初选用的平台是Ubuntu15.10(是的,就是非稳定版,感觉这就是悲剧的开端)。 bnuoj的github主页上有详细的安装wiki,我们按要求clone了web前端,放在nginx+php5-fpm下,马上就出了问题。 localhost下可以访问网站,但登录功能不可用。点击登陆后显示“success”,手动查看数据库发现user表的最后登录时 间已更新,然而浏览器仍显示未登录。发现cookie未写入。cookie项显示“deleted” 后尝试在ubuntu16.04LTS下部署。 然而在16.04下,php5已经失去支持,安装的版本为php7.0-fpm,而php7已经抛弃了对mysql的支持, 只能选择mysqli或者pdo。为了尽量减少代码改动,我们选择升级ezsql后使用mysqli接口。此时php已经可以正常 访问数据库了。
随后发现注册功能工作不正常。mysql手动添加账号后登陆成功。 接着排查注册失败原因。注册时返回“success”然而后台发现没有添加成功,怀疑php 中sql语句出错。找到user.php中的sql语句手动在后台执行提示缺少默认值错误。 对缺少的默认值逐个添加后功能正常。随后在各个功能模块写数据库的部分均发现这个问题, 都添加了默认值来解决(有个别项目并不知道是起什么作用的啊衰~~)并不知道会不会有什么影响。
准备测试没有问题了之后导出一次数据库,把所有东西做一个备份。
壹
judger&dispatcher的配置较为简单,需要注意的是运行时当前路径需要是src的上一级目录 即judger和dispatcher。可能程序中用的时相对路径的缘故。我是将两个程序放在了 tty1下后台执行的(dispatcher &和judger &)。可以用jobs查看。vjudge尚未测试 (因为还没有在各个网站建立账号)。我们只开放了gcc,g++和java交题,java用的是 open-jdk,java版本1.8。(不知为何,装了openjdk之后我的mc就不能打开了,悲伤~)
贰
感觉bnuoj的内嵌文本编辑很强大。然而我认为功能过于繁琐,下一步想将这一模块改成 markdown编辑,数据库中也存markdown源码,会省去一些麻烦。
END
先写这么多,想到再加。再次感谢bnuoj开发者。