如何自己搭建一个OJ(在线判题系统)?

好久不见. 提交于 2020-03-05 08:14:23

文章目录

1. centOS7/LINUX 云服务器

我自己拿的是腾讯云的

2. 如何开一个桌面?

我准备的GNOME桌面

2.1. yum groupinstall “X Window System” #X 窗口系统

####2.2. yum groupinstall “GNOME Desktop”  #GNOME系统桌面
####2.3. startx #切换到图形化界面

3. 如何安装python?

####3.1.下载,解压,编译,安装:
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar -xvf Python-3.6.0.tgz
./configure --prefix=/usr/local/python3
make &&make install
####3.2.链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
###3.3.配置pip3
PATH=PATH:PATH:HOME/bin:/usr/local/python3/

###4. 如何手动安装pip3?
####4.1.执行
wget --no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-9.0.1.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
 
tar -zxvf pip-9.0.1.tar.gz
 
cd pip-9.0.1
 
 python3 setup.py build
 
 python3 setup.py install

4.2.为什么需要pip3?

4.2.1 在命令“pip install docker-compose”中需要pip3.0及其以上

5. 如何安装Docker?

这里我安装的是Docker社区版

5.2.仓库

#####5.2.1 安装所需的软件包。yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-data和lvm2由需要 devicemapper存储驱动程序。
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
####5.2.2 使用以下命令来设置稳定的存储库。
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

5.3 安装Docker Engine-Community和containerd

####5.3.1 安装最新版本的Docker Engine-Community和containerd,或者转到下一步安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io

5.4 启动Docker。

$ sudo systemctl start docker

5.5 通过运行hello-world 映像来验证是否正确安装了Docker Engine-Community 。

$ sudo docker run hello-world

5.6 参考网站

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

6. 安装QingdaoU/OnlineJudgeDeploy

6.1.安装必要的依赖

6.1.1. sudo apt-get update && sudo apt-get install -y vim python-pip curl git
6.1.2. pip install docker-compose
6.1.3.问题!
6.1.3.1.这里是通过apt-get安装 而非 yum

##6.1.3.2.我直接讲"apt-get"替换为了"yum"完成了运行

6.1.3.3.我搜索的所有页面对于CentOS安装apt-get都不可行,可能是版本问题

6.2.开始安装

6.2.1.请选择磁盘空间富余的位置,运行下面的命令

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

6.2.2.启动服务

docker-compose up -d

6.2.3.TIPS

根据网速情况,大约5到30分钟就可以自动搭建完成,全程无需人工干预。
等命令执行完成,然后运行 docker ps -a,当看到所有的容器的状态没有 unhealthy 或 Exited (x) xxx 就代表 OJ 已经启动成功。

6.3.尽情享用吧

6.3.1.通过浏览器访问服务器的 HTTP 80 端口或者 HTTPS 443 端口,就可以开始使用了。后台管理路径为/admin, 安装过程中自动添加的超级管理员用户名为 root,密码为 rootroot, 请务必及时修改密码。
6.3.2.不要忘记阅读文档 http://docs.onlinejudge.me/

7. 如何开linux的端口?

7.1.1.关闭与开启防火墙
  启动:systemctl start firewalld
  关闭: systemctl stop firewalld
7.1.2.查看防火墙是否开启的状态,以及开放端口的情况
systemctl status firewalld.service
firewall-cmd --list-all 
7.1.3. 通过以下命令开放http 80 端口
firewall-cmd  --add-port=80/tcp --permanent
命令末尾的--permanent表示用久有效,不加这句的话重启后刚才开放的端口就又失效了 
7.1.4 .然后重启防火墙:
sudo firewall-cmd --reload
7.1.5. 再次查看端口的开放情况:
 firewall-cmd --list-all
 ports:里出现了 80 端口

7.2 服务商添加安全组

不赘述

7.3 TIPS
7.3.1.Linux 系统默认只开放了22端口
7.3.2.而http 需要80/8080端口
7.3.3.https 需要443端口
7.3.4.我似乎是在docker-compose up -d命令时,发现Docker内的OJ需要8080端口

8.结束

参考网站

1.https://www.bilibili.com/video/av21303002/?p=11[尚硅谷_韩顺平_Linux教程(千万级学习人次的经典教程,2018重磅升级)]

2.尚硅谷_Docker核心技术(基础篇)

3.Docker官网

4.[CSDN]阿里云centos7.x 打开80端口

5.腾讯云学生服务器

6.【GITHUB】青岛大学开源OJ

##tips:
####A. linux 下 pip 安装教程
#####A.a 下载文件

wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

#####A.b 执行安装

python get-pip.py

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!