如题,部署青岛大学的开源OJ用于测试,但是根据他们在github提供的文档总是安装失败,我自己找到了合适办法解决了,所以记录一下。

环境是Ubuntu14.04-64bit,这套系统使用docker部署,整体是Python写的。

1.安装docker-ce,最新版的docker安装变成了docker-ce,可以点这里参考docker官方文档

首先检查和删除旧版本的docker

sudo apt-get remove docker docker-engine docker.io

安装一些工具(update之前最好确定自己的Ubuntu14安装源在国内,这样可以节省时间,最好是换成阿里云的源)

sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

添加官方秘钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加apt安装配置

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

安装

sudo apt-get update && sudo apt-get install docker-ce

安装完后你可能会遇到docker服务无法启动或者找不到文件之类的问题,是因为docker-ce变换了策略,docker 进程通过监听一个 Unix Socket 来替代 TCP 端口。在默认情况下,docker 的 Unix Socket属于root用户,当然其他用户可以使用sudo方式来访问。因为这个原因, docker 进程就一直是root用户运行的。所以用下边的方法把自己的用户名加到docker的用户组里边去,以后就不用sudo了:

sudo gpasswd -a username docker
sudo service docker restart

然后reboot你的主机。

2.安装必要的依赖

sudo apt-get install -y vim python-pip curl git
sudo pip install docker-compose

3.开始安装oj

sudo git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy
docker-compose up -d



docker-compose 启动的时候报错 'module' object has on attribute 'connection'怎么办?

尝试运行 pip install --upgrade pip && pip install -U urllib3,然后再重试看看。如果还不行,就把pip安装的compose卸载,然后手动去官网下载compose进行安装,这时候应该就不会出现上边的报错了。

 

然后docker会自动的推送镜像,等待就好了,具体时间看网速。

4.后续:

安装过程中自动创建了用户名为root密码为rootroot,及时修改密码以保证安全。

题目的导入是个问题,不光要在web上写,还要导入一个压缩包,具体做法看最后列出的第二个文档就好了。

 

后边我还会探索如何自定义这套OJ的前端。

 

具体的安装和配置文档参考青岛大学开源文档就好:

https://github.com/QingdaoU/OnlineJudge

https://docs.onlinejudge.me

https://www.zybuluo.com/virusdefender/note/171932

本文参考的其他文档:


https://www.jianshu.com/p/0ebd1b5120f5

https://docs.docker.com/install/linux/docker-ce/ubuntu/