原文鏈接:這里
0.前言
OJ(OnlineJudge)是在線判題系統,很多學校或者機構打比賽都有自己的OJ系統。QingdaoU這個OJ是最新開發的一個OJ系統,界面比較好
官方文檔:https://docs.onlinejudge.me/#/onlinejudge/guide/deploy
github: https://github.com/QingdaoU/OnlineJudge
官方DEMO: https://qduoj.com/
官方QQ群:496710125
本文環境:centos7.7 + 寶塔面板7.3
1.環境安裝
官方設置了一鍵安裝(docker下),centos(寶塔)安裝docker請點這。
但是需要一些程序
docker-compose(安裝這個需要pip)
vim
git
curl
我們使用寶塔面板后面三個都已經存在。只有docker-compose需要安裝,安裝docker-compose需要pip,所以我們想辦法先安裝pip。
centos下安裝pip,需要使用如下指令。
yum -y install epel-release
yum -y install python-pip
然后升級一下pip
pip install --upgrade pip
有了pip之后,我們就要按照docker-compose,我們輸入
pip install docker-compose
等待大概幾分鍾就安裝完畢了。但是安裝的過程中發現上面的指令可能會報錯,可能是源的問題,那么我們可以用下面的指令。
pip install docker-compose -i https://pypi.douban.com/simple
輸入docker-compose version 查看版本信息。
2.一鍵安裝
在服務器上新建一個文件夾,用來存儲我們的OJ系統。我們在WWW文件下新建一個文件夾“QDOJ”
然后我們cd到QDOJ這個文件夾,在這個文件夾下輸入下面的指令。
git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy
我們可以看到一鍵安裝的文件已經下載完了。
然后在輸入下面的指令
docker-compose up -d
開始拉取docker鏡像
如果pull的速度慢,考慮要換源,換源的方式在文章開頭的centos安裝docker里。經過實測,更換源之后的速度很快。
如果有下面報錯,說明端口被占用,有兩種方法解決。
for oj-backend Cannot start service oj-backend: driver failed programming external connectivity on endpoint oj-backend (4d304660a0329643bb3bf1e63519dff3dc65fe8bbbb00a9c5a38f0ebe4ac76c7): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
第一種方法:把本機Centos 中的占用80端口的程序停掉
第二種就是修改docker-compose.yml文件,這種方法我們會在后面的文章中詳細解釋。
本文選取的是第一種方法。先停掉本機的占用80端口的程序,在寶塔中由於我安裝了nginx所以一直占用80端口,那么就先把nginx停掉。然后重啟docker中的oj-backend容器
我們訪問虛擬機的IP,看到一下界面表示成功。
3.后台登錄
我們登錄登錄后台( 你的IP地址/admin)
用戶名:root
密碼:rootroot
這樣就表示登錄成功了。但是還是有一些問題,比如是中文的,這些問題在下面幾篇文章中詳說。