写该文章的原因
之前我已经搭建好了一个,但是想要进行一些改动,原来搭建好的里面已经放了很多题了在用了,怕乱改改崩溃了,所以打算再搭建一个拿来改着玩,积攒积攒经验。
服务器
这里我选用的是阿里云的轻量应用服务器,操作系统是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版本太低。
这时候需要进行pip升级。
不过在此之前,我们需要先升级一下我们的python版本,我们的python版本也不是很高。
centos7升级python版本到3.6
- 从官网上获取到python3.6的包
小声说:下载的很慢hh
cd /usr/local/src
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
- 进行解压缩
tar -xzf Python-3.6.3.tgz
- 在/usr/local路径下创建目录——python3
mkdir /usr/local/python3
- 编译安装
cd /usr/local/src/Python-3.6.3
./configure --prefix=/usr/local/python3
make all
make install
- 进入安装的绝对路径,检查是否安装成功
/usr/local/python3/bin/python3.6 -V
- 查看环境变量,启动python时默认按照PATH的顺序去查找
echo $PATH
- 修改软连接,启动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
升级pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
再次查看pip版本,如下图:
这是因为pip启动来源还是之前版本python下的路径,这个时候我们需要去改一下它的启动来源。
vim /usr/bin/pip
我们需要将下图中四个位置进行修改:
修改之后:
再次执行pip install docker-compose
就很顺利,没有报错。
紧接着执行sudo yum -y install vim
,出现下图中错误:
打开我们的yum
vim yum
看到最上面一行,发现它引的是我们刚更新后的python,这时候我们应该手动去调整一下,让它指向之前版本的python文件夹。
再次执行sudo yum -y install vim
发现又产生新的一个错误:
不用着急,让我们打开这个报错的文件看看
vim /usr/libexec/urlgrabber-ext-down
发现它同之前的yum文件一样,指向的都是新版本的python:
我们再次进行修改,使它指向旧版本的python文件夹即可:
再次执行sudo yum -y install vim
好的,很顺利,没有报错,甚至还告诉了你complete!
然后再执行下面两条语句,我们的检查必要依赖操作就结束啦
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
发现有很多,看得头皮发麻
我选择的是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
到这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
报错:
说找不到我们的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
可能会下载失败,多试几次即可。
2. 配置可执行权限
chmod +x /usr/local/bin/docker-compose
3. 测试安装是否成功
docker-compose --version
至此,我们的docker-compose命令就安装好了,那我们就继续使用docker-compose up -d
启动我们的项目。
在一大堆complete之后,执行docker ps -a
,我们的OJ就跑起来啦。
访问
通过浏览器访问服务器的 HTTP 80 端口或者 HTTPS 443 端口,就可以开始使用了。后台管理路径为/admin, 安装过程中自动添加的超级管理员用户名为 root,密码为 rootroot, 请务必及时修改密码。