写该文章的原因

之前我已经搭建好了一个,但是想要进行一些改动,原来搭建好的里面已经放了很多题了在用了,怕乱改改崩溃了,所以打算再搭建一个拿来改着玩,积攒积攒经验。

服务器

这里我选用的是阿里云的轻量应用服务器,操作系统是centos-release-7-6.1810。

检查必要的依赖

打开终端,依次输入以下指令

sudo yum update
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo yum clean all
sudo yum -y install python-pip
pip install docker-compose

然后会出现下图中的报错,说你的pip版本太低。

python写系统 用python做oj系统_python

这时候需要进行pip升级。

不过在此之前,我们需要先升级一下我们的python版本,我们的python版本也不是很高。

python写系统 用python做oj系统_docker_02

centos7升级python版本到3.6

  1. 从官网上获取到python3.6的包
    小声说:下载的很慢hh
cd /usr/local/src
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
  1. 进行解压缩
tar -xzf Python-3.6.3.tgz
  1. 在/usr/local路径下创建目录——python3
mkdir /usr/local/python3
  1. 编译安装
cd /usr/local/src/Python-3.6.3
./configure --prefix=/usr/local/python3
make all
make install
  1. 进入安装的绝对路径,检查是否安装成功
/usr/local/python3/bin/python3.6 -V

python写系统 用python做oj系统_docker_03

  1. 查看环境变量,启动python时默认按照PATH的顺序去查找
echo $PATH

python写系统 用python做oj系统_centos_04

  1. 修改软连接,启动python时指向python3.6

7.1 备份之前的python

mv /usr/bin/python /usr/bin/python2.7.5

7.2 修改软连接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

7.3 查看python版本

python -V

python写系统 用python做oj系统_linux_05

升级pip

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

python写系统 用python做oj系统_centos_06

再次查看pip版本,如下图:

python写系统 用python做oj系统_python写系统_07


这是因为pip启动来源还是之前版本python下的路径,这个时候我们需要去改一下它的启动来源。

vim /usr/bin/pip

我们需要将下图中四个位置进行修改:

python写系统 用python做oj系统_python_08


修改之后:

python写系统 用python做oj系统_python写系统_09


再次执行pip install docker-compose就很顺利,没有报错。

紧接着执行sudo yum -y install vim,出现下图中错误:

python写系统 用python做oj系统_python_10


打开我们的yum

vim yum

python写系统 用python做oj系统_python写系统_11


看到最上面一行,发现它引的是我们刚更新后的python,这时候我们应该手动去调整一下,让它指向之前版本的python文件夹。

python写系统 用python做oj系统_centos_12


再次执行sudo yum -y install vim发现又产生新的一个错误:

python写系统 用python做oj系统_centos_13


不用着急,让我们打开这个报错的文件看看

vim /usr/libexec/urlgrabber-ext-down

发现它同之前的yum文件一样,指向的都是新版本的python:

python写系统 用python做oj系统_python写系统_14


我们再次进行修改,使它指向旧版本的python文件夹即可:

python写系统 用python做oj系统_linux_15


再次执行sudo yum -y install vim 好的,很顺利,没有报错,甚至还告诉了你complete!

python写系统 用python做oj系统_linux_16


然后再执行下面两条语句,我们的检查必要依赖操作就结束啦

sudo yum -y install curl
sudo yum install -y git

安装Docker容器

1. 升级yum包

为了排除系统环境的影响

yum update

2. 安装需要的软件包

yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

3. 设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. 安装Docker

先查看所有的Docker版本

yum list docker-ce --showduplicates | sort -r

发现有很多,看得头皮发麻

python写系统 用python做oj系统_docker_17


我选择的是17.12.1.ce:

yum install docker-ce-17.12.1.ce

然后一路y到底就complete!

启动Docker

systemctl start docker

为了避免每一次重启服务器都要启动Docker,我们加入一下开机自启

systemctl enable docker

查看Docker版本

验证一下是不是真的成功咯

docker version

python写系统 用python做oj系统_python_18


到这docker容器就安装成功了,然后让我们进入到下一步!

克隆并启动项目

1. 选择一个安装路径

我选择在/usr/local下建一个名为qingdao的文件夹存放

cd /usr/local
mkdir qingdao

2. 克隆项目

cd qingdao
git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy

clone的时候可能会因为网络不好失败,多试几次就可以了。

3. 启动项目

执行下面指令:

docker-compose up -d

报错:

python写系统 用python做oj系统_docker_19


说找不到我们的docker-compose,那我们就手动安装一下吧!

手动安装docker-compose命令

1.下载最新版的 docker-compose 二进制执行文件
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

python写系统 用python做oj系统_docker_20


可能会下载失败,多试几次即可。

2. 配置可执行权限
chmod +x /usr/local/bin/docker-compose
3. 测试安装是否成功
docker-compose --version

python写系统 用python做oj系统_python写系统_21


至此,我们的docker-compose命令就安装好了,那我们就继续使用docker-compose up -d启动我们的项目。

在一大堆complete之后,执行docker ps -a,我们的OJ就跑起来啦。

访问

通过浏览器访问服务器的 HTTP 80 端口或者 HTTPS 443 端口,就可以开始使用了。后台管理路径为/admin, 安装过程中自动添加的超级管理员用户名为 root,密码为 rootroot, 请务必及时修改密码。

python写系统 用python做oj系统_python写系统_22