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

Ubuntu 14.04 下 Virtual Judge 的搭建

118次阅读
没有评论

共计 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、短信等云产品特惠热卖中