阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 14.04 下 Virtual Judge 的搭建

441次阅读
没有评论

共计 5087 个字符,预计需要花费 13 分钟才能阅读完成。

由于集训队需要,我们决定架设自己的 OnlineJudge 和 Virtual Judge。

OJ 的搭建,非常顺利,但是,Vjudge 的搭建,我却遇到了相当多的问题。

无奈,泛滥的大量博文中,信息相当杂,精品相当少,大多数都是转载来转载去,内容相同还没有营养,搭建 Vjudge 方面的博文更是稀少,连续两天我都没有能够搭建起来,最后在 jcf 的帮助下,终于解决了各种问题,成功搭建起了 Virtual Judge。

(强烈吐槽一下:在打包 war 文件的时候有 0.2MB 的文件掉包了导致我折腾了整整两天)

但是对于不熟悉 Linux 和 JSP 的同学,这篇文章也许太过简单, 然而,我再也没有找到更好的参考博文或是文档,于是,决定自己花一点时间来完成这个空缺,这篇文章由此诞生。

1. 前期准备工作

1.1 一个 Linux 系统

因为现场赛的缘故,我一直使用的都是乌邦图。这里我测试用的是 Ubuntu14.04 Desktop 64bit , 当然选择 Server 会更好一些.
    系统的安装不再赘述,作为服务器请选用 Server 版本。

1.2 更新源

在搭建环境之前,请确保你的源是有效的,速度是给力的,
建议选择一个国内的源 14.04 LTS 更新源

sudo gedit /etc/apt/sources.list 将原来的源覆盖并保存
最后执行 sudo apt-get update  更新源

1.3 必要文件准备

我们需要下载这几个文件(部分链接需要 FQ 才能访问):
1.*.sql 	 		https://gist.github.com/trcnkq/a3cf7004759d41d79eb7
2.http_client.json 		https://gist.github.com/trcnkq/7a5deff639ff99475138
3.remote_accounts.json 	https://gist.github.com/trcnkq/e9dac7eea72d2b781949
4.virtual judge 源文件 	https://github.com/trcnkq/virtual-judge

如果无法 FQ,请用我的备用链接:Vjudge 搭建

或者:

—————————————— 分割线 ——————————————

FTP 地址:ftp://ftp1.linuxidc.com

用户名:ftp1.linuxidc.com

密码:www.linuxidc.com

在 2015 年 LinuxIDC.com\9 月 \Ubuntu 14.04 下 Virtual Judge 的搭建

下载方法见 http://www.linuxidc.com/Linux/2013-10/91140.htm

—————————————— 分割线 ——————————————


2. 必要环境搭建

2.1 JDK 的安装和配置

首先需要下载 JDK,地址:https://jdk7.java.net/download.html
    注意系统是 32 位还是 64 位
1.)	解压下载的文件
tar -xzvf jdk1.7.0_80
2.)	移动文件夹到指定目录下
sudo mkdir /usr/lib/jvm
sudo mv jdk1.7.0_80/ /usr/lib/jvm/
3.)	设置环境变量
sudo gedit /etc/profile

在文件最后加入如下内容:export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

Ubuntu 14.04 下 Virtual Judge 的搭建

4.)	使修改生效:sudo source /etc/profile

这时候在终端输入 java –version 查看当前 JDK 版本
至此,JDK 配置完成

Ubuntu 14.04 下 Virtual Judge 的搭建

2.2 Redis 的安装和配置

1.)    下载安装 Redis:
wget http://download.redis.io/releases/redis-2.8.9.tar.gz  
tar xvzf redis-2.8.9.tar.gz  
cd redis-2.8.9/  
make
sudo make install
2.)    配置 init 脚本:wget https://github.com/ijonas/dotfiles/raw/master/etc/init.d/redis-server
wget https://github.com/ijonas/dotfiles/raw/master/etc/redis.conf
sudo mv redis-server /etc/init.d/redis-server
sudo chmod +x /etc/init.d/redis-server
sudo mv redis.conf /etc/redis.conf
3.)    初始化用户和日志路径
第一次启动 Redis 前,建议为 Redis 单独建立一个用户,并新建 data 和日志文件夹
sudo useradd redis
sudo mkdir -p /var/lib/redis
sudo mkdir -p /var/log/redis
sudo chown redis.redis /var/lib/redis
sudo chown redis.redis /var/log/redis
4.)	设置开机自动启动,关机自动关闭
update-rc.d redis-server defaults
5.)	启动 Redis:/etc/init.d/redis-server start

2.3 Maven3 的安装和配置

1.)    通过 apt-get 安装 Maven3
ubuntu12.04 之后,可直接用 apt-get 来获得
sudo apt-get install maven -y

安装完后,进入 sudo su 进入 root
用 mvn –v 查看一下 Maven 的版本,如下图:
安装完毕后,默认的 JDK 版本可能会被更改。
因为 Maven3 安装的同时把 openjdk 也一并安装了。
Ubuntu 14.04 下 Virtual Judge 的搭建

2.)  修改系统默认的 jdk

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300

update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300

update-alternatives --config java
update-alternatives --config javac

使用 java -version 再次查看,JDK 版本已更改

Ubuntu 14.04 下 Virtual Judge 的搭建

2.4 Tomcat7 的安装和配置

1.)    apt-get 安装 tomcat7:sudo apt-get install tomcat7 -y  

tomcat7 默认会被安装在目录 /var/lib/tomcat7/ 下,
安装完之后在浏览器下输入 localhost:8080 查看是否安装成功
如果出现下图,即为安装成功

Ubuntu 14.04 下 Virtual Judge 的搭建

2.)    安装 tomcat7-admin
安装成后,我们还需要安装一个 tomcat7-admin
sudo apt-get install tomcat7-admin
3.)    修改账户:安装完毕之后,我们进入 tomcat7 的 conf 目录下修改 tomcat-users.xml 文件
cd /var/lib/tomcat7/conf/
gedit tomcat-users.xml 

我这里用的是
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>

Ubuntu 14.04 下 Virtual Judge 的搭建

4.)    重启 tomcat:
sudo /etc/init.d/tomcat7 restart

重新在浏览器打开 tomcat 界面
点击 manager webapp,用刚才我们建立的用户登陆
Ubuntu 14.04 下 Virtual Judge 的搭建

5.)    修改 JDK 默认的 JDK 版本

检查 tomcat7 的 Server Information,版本可能不是我们自己的 jdk 版本。这里我们要修改 tomcat 使用的 JDK 版本,这步很重要,否则会出现很多问题 

Ubuntu 14.04 下 Virtual Judge 的搭建

sudo gedit /etc/default/tomcat7

加入如下内容:JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

再次重启 tomcat7:sudo /etc/init.d/tomcat7 restart

Ubuntu 14.04 下 Virtual Judge 的搭建

OK,tomcat7 的 JDK 版本修改完毕。

2.5 Mysql 的安装

sudo apt-get install mysql-server -y
安装过程中会要求你输入数据库的密码,这里我直接用的 123456,连续输入两次即可。进入数据库测试一下
mysql -u root -p

输入密码之后如果看到下图,表明 mysql 成功安装:
Ubuntu 14.04 下 Virtual Judge 的搭建

至此,搭建 Virtual Judge 所需的所有环境,都已搭建完毕!


3. 工程代码实施

准备好四个文件,就是一开始下载的那四个:
Ubuntu 14.04 下 Virtual Judge 的搭建

3.1 Vjudge 的打包

进入 virtual-judge-master 目录:cd virtual-judge-master/

用 Maven 将 Virtual Judge 打包:
mvn clean package

里面会有一个 vjudge.war 文件,就是我们打包完成的 Virtual Judge。
把这个 war 文件拷到 tomcat7 的 webapps 目录下。

打包的过程可能会相当长,特别是网络不好的情况下,万一掉包了,非常蛋疼,如果你不想等待太久,可以直接下载此文件,百度网盘

放到 webapps 目录后,会自动生成一个 vjudge 文件夹,如果没有生成,你也可以自行解压。
Ubuntu 14.04 下 Virtual Judge 的搭建

3.2 remote_accounts.json 文件的编辑

把各个 OJ 的提交账号添加到 remote_accounts.json 里。

3.3 config.properties 文件的编辑

如不需要代理或 VPN 访问国外 OJ,保留 http_client.json 里面的 [“direct”] 即可。

Ubuntu 14.04 下 Virtual Judge 的搭建

3.4 vjudge 的简单部署

把 remote_accounts.json 和 http_client.json 两个文件放在指定的文件夹下
这里我放在 /var/lib/tomcat7/webapps/vjudge/ 目录下

sudo mv http_client.json /var/lib/tomcat7/webapps/vjudge/
sudo mv remote_accounts.json /var/lib/tomcat7/webapps/vjudge/

更改 /webapps/vjudge/WEB-INF/classes/ 的目录下 config.properties 文件
将 remote_accounts.json 和 http_client.json 的绝对路径改为正确的路径

cd /var/lib/tomcat7/webapps/vjudge/WEB-INF/classes/
sudo gedit config.properties

Ubuntu 14.04 下 Virtual Judge 的搭建

PS: 如果你的数据库密码不是 123456,那么上面的 root 密码你也需要修改,默认为 123456

3.5 vhoj 数据库的建立

在 mysql 中新建一个数据库,名字为:vhoj,
并把表 vhoj_20141109.sql 导入(可能我的版本略微旧了点)。

mysql -u root -p  
create database vhoj;  
exit;

Ubuntu 14.04 下 Virtual Judge 的搭建

mysql -h localhost -u root -p vhoj < vhoj_20141109.sql

Ubuntu 14.04 下 Virtual Judge 的搭建

最后,重启 tomcat7,进入 manager
查看 Application,可以看到 vjudge 已经处于 running 状态了。
Ubuntu 14.04 下 Virtual Judge 的搭建


4. 大功告成的 Vjudge

在地址栏输入 localhost:8080/vjudge,进入搭建成功的 vjudge:

Ubuntu 14.04 下 Virtual Judge 的搭建

到此为止,Virtual Judge 终于搭建成功,just enjoy it!

参考文献:http://www.linuxidc.com/Linux/2015-09/123240.htm

更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/123243.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5087字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960554
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...