热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Ubuntu14.04下VirtualJudge的搭建

由于集训队需要,我们决定架设自己的OnlineJudge和VirtualJudge。OJ的搭建,非常顺利,但是,Vjudge的搭建,我却遇到了相当多的问题。无奈,泛滥的大量博文中,信息相当杂,精品相当少,大多数都是转载来转载去,内容相同还没有营养,搭建Vjudge方面的博文更是稀少,连续两天我都没有能够搭建起来,最后在jcf的帮助下,终于解决了各种问题,成功搭建起了VirtualJu

由于集训队需要,我们决定架设自己的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 

我这里用的是


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 

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


推荐阅读
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • yum安装_Redis —yum安装全过程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Redis—yum安装全过程相关的知识,希望对你有一定的参考价值。访问https://redi ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
邵世以_806
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有