/*注 在命令前加 sudo是以管理员权限运行,如果在刚打开的终端中输入 sudo su 回车。之后的命令就不用在加sudo了,之后的全部以管理员权限运行…..
PS:直接打开文件系统是没有权限复制粘贴和更改文本内容的,可在终端中输入nautilus,这样打开文件系统就会有权限进行所有操作。
一.
一台装ubuntu的机器
或者
二.一台在虚拟机上安装UBUNTU的机器
三、安装mysql
进入终端(就在左边菜单栏里),首先输入 sudo su进入权限模式,让你输密码就输你安装完时设的密码,回车,
再输入apt-get installmysql-server mysql-client按回车
确认安装即可,
以下安装的几个软件跟三的方法是一样的,就不一一说了,输上按回车就行。。软件园中都有!!!
安装完成之后,会让你设置数据库密码,即是后来的DBPASS,一定要记住!!!
四、安装apache2
继续输入apt-get install apache2确认安装即可
这里要说明一下的就是ubuntu下的apache默认网页执行文件夹在/var/www/下面,配置文件在/etc/apache2/apache2.conf,配置文件子目录在/etc/apache2/下
进入火狐浏览器,键入http://localhost,出现It
works!代表安装成功
五、安装php
继续输入apt-get install php5 libapache2-mod-php5确认安装即可
重启apache,输入/etc/init.d/apache2restart
先下载一个文本编辑器gedit,方法同三.
输入apt-get
install gedit
建立新的网页,这点注意下啊,由于你无权限在系统文件夹下创建新。。,所以直接以管理员身份运行,在终端输入sudo
gedit大开编辑器,
添加内容<?php phpinfo();?>保存即可,保存目录为
vi /var/www/info.php
进入火狐浏览器,键入http://localhost/info.php,出现php属性页面代表安装成功
七.安装onlinejudge
1.apt-get update
完成之后
2.sudo apt-get install subversion
完成之后
3.输入svn checkout http://hustoj.googlecode.com/svn/trunk/install hustoj
(需要用vpn,进外网下载),因为google服务器搬出大陆了,所以需要翻墙,想办法搞个vpn,不然没法进去下载!!!
继续输入cd hustoj,进入hustoj文件夹
接下来,要修改一个文件里面的用户名密码,是下面这个文件
hustoj/install.sh
输入sudo gedit 再次进入文本编辑器,通过它在目录中找到install.sh然后把DBPASS密码修改成设定的数据库用户名密码;
上面给的都要通过终端的方式以管理员权限修改,
最后一步,
输入sudo ./install.sh安装hustoj相关的支持软件(这步也需要VPN,即需要连接外网,一定要保持vpn的连接)
进入火狐浏览器,键入http://localhost/JudgeOnline,出现JudgeOnline页面代表安装成功,其他相关问题查看http://code.google.com/p/hustoj/wiki/FAQ
PS:1.svn锁定副本的问题:
你回到他的上级目录进行clear up,如果还不行,那就回到最上级的目录进行clear up
我出现的是judge-read-only的副本锁定问题,导致本应下载的内容下载不下来,我就干脆把这个文件夹删了,重新安装了一遍!
2.如果出现
Could not connect: Access denied for user ‘root‘@‘localhost‘(using password: YES)
那么打开目录:
var/www/judgeonline/include中的de.info.inc.php
把DBPASS改成数据库密码(之前设置的)
八.设置apache服务器网站根路径(设置之后可通过IP访问OJ)
1.进入目录 /etc/apache2/sites-aviliable/
2.打开目录下的两个文件(default什么的),把其中的documentroot后面加上judgeonline
3.然后重启apache2 :终端输入
/etc/init.d/apache2 restart
这样应该就OK了。
终端ipconfig,找到本机IP地址,浏览器中输入IP,登陆OJ
九,注册帐号测试admin功能
来,打开OJ,注册一个账号,下面我们来为这个账号获得管理员权限
比如说我注册的帐号叫yutou
第一步,终端进入 输入sudo su 输密码
第二步 输入 mysql –u root –p 回车
然后输密码 进入mysql
第三步 输入 show databases;查看所有数据库
第四步, 输入 use jol;(hustoj用户数据库) 要想进去的话就输入select * from jol;
第五步 输入
insert into privilege(user_id,rightstr)values(‘yutou‘,‘administrator‘);
如果你的帐号叫zhangkun,那么只需要更改帐号部分,如
insert into privilege(user_id,rightstr)values(‘zhangkun‘,‘administrator‘);
OK 大功告成,这样你的账号就有管理员权限了。。。。重点是选对数据库。
PS:以下要下载的地方也几乎都需要外网,所以一定要先准备好一个VPN帐号,具体到网上搜一下免费的VPN和设置,这里就不多赘述。
1. 安装jdk
sudo apt-get install openjdk-6-jdk
2. 安装tomcat
(1)安装
在http://tomcat.apache.org/download-60.cgi页面中下载Core里的tar.gz文件;下载完解压后,将解压后的文件夹移至/usr/local中。
(2)启动tomcat
在终端执行/usr/local/apache-tomcat-6.0.41/bin/startup.sh
(这里的tomcat的版本后面不一样具体自己调整比如你下的6.0.35你就把命令改成6.0.35)
3.在jsp中使用JDBC来连接MySQL数据库
下载JDBC驱动程序
打开www.mysql.com/downloads/页面,最下面有几列链接,其中一列第一个有意个download,点开,左侧寻找connectors,然后网页左侧有connector/J点击会出现供选择的tar.gz和zip文件下载(下载.tar.gz文件),下载完毕后解压缩。
下载需要申请帐号,用邮箱申请就好了;
配置连接文件
将刚刚展开的mysql-connector-java-5.1.18中的mysql-connector-java-5.1.18-bin.jar文件拷贝到上面安装的jdk和tomcat下的lib文件夹中:
jdk:/usr/lib/jvm/java-6-openjdk/lib
tomcat:/usr/local/apache-tomcat-6.0.35/lib/PS:(这里的版本也是,你下载的5.x.xx你就把相应的5.x.xx移到相应的目录下)
4.在myql中创建vhoj数据库
先进入数据库
1、在终端中输入sudo mysql -u root -p
回车然后输入你的数据库密码
2、创建vhoj数据库 create
database vhoj;
3 、查看是否创建成功showdatabases;
4、选中vhoj数据库,use vhoj;
5,创建表格,执行以下sql语句
CREATE TABLE`t_contest`( |
`C_ID` int(10)NOT NULL auto_increment, |
`C_TITLE` varchar(100)collate utf8_unicode_ci default NULL, |
`C_DESCRIPTION` textcollate utf8_unicode_ci, |
`C_PASSWORD` varchar(40)collate utf8_unicode_ci default NULL, |
`C_BEGINTIME` datetimedefault NULL, |
`C_ENDTIME` datetimedefault NULL, |
`C_MANAGER_ID` int(10)default NULL, |
`C_HASH_CODE` varchar(40)collate utf8_unicode_ci default NULL, |
`C_REPLAY_STATUS_ID` int(10) unsigneddefault NULL, |
`C_ANNOUNCEMENT` textcollate utf8_unicode_ci, |
`C_ENABLE_TIME_MACHINE` int(1) unsigneddefault NULL, |
PRIMARY KEY (`C_ID`), |
KEY `Index_manager_id`(`C_MANAGER_ID`), |
KEY `Index_hash_code`(`C_HASH_CODE`), |
KEY `Index_replay_status_id`(`C_REPLAY_STATUS_ID`) |
) ENGINE=InnoDBDEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; |
CREATE TABLE`t_cproblem`( |
`C_ID` int(10)NOT NULL auto_increment, |
`C_PROBLEM_ID` int(10)default NULL, |
`C_CONTEST_ID` int(10)default NULL, |
`C_NUM` varchar(2)collate utf8_unicode_ci default NULL, |
`C_TITLE` varchar(100)collate utf8_unicode_ci default NULL, |
`C_DESCRIPTION_ID` int(10) unsigneddefault NULL, |
PRIMARY KEY (`C_ID`), |
KEY `Index_problem_id`(`C_PROBLEM_ID`), |
KEY `Index_contest_id`(`C_CONTEST_ID`), |
KEY `Index_description_id`(`C_DESCRIPTION_ID`) |
) ENGINE=InnoDBDEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; |
CREATE TABLE`t_description`( |
`C_ID` int(11)NOT NULL auto_increment, |
`C_DESCRIPTION` text characterset utf8 collate utf8_unicode_ci, |
`C_INPUT` text characterset utf8 collate utf8_unicode_ci, |
`C_OUTPUT` text characterset utf8 collate utf8_unicode_ci, |
`C_SAMPLEINPUT` text characterset utf8 collate utf8_unicode_ci, |
`C_SAMPLEOUTPUT` text characterset utf8 collate utf8_unicode_ci, |
`C_HINT` text characterset utf8 collate utf8_unicode_ci, |
`C_PROBLEM_ID` int(11)NOT NULL default ‘0‘, |
`C_UPDATE_TIME` datetimedefault NULL, |
`C_AUTHOR` varchar(100)default NULL, |
`C_REMARKS` varchar(500) characterset utf8 collate utf8_unicode_cidefault NULL, |
`C_VOTE` int(10) unsigneddefault NULL, |
PRIMARY KEY (`C_ID`), |
KEY `Index_problem_id`(`C_PROBLEM_ID`) |
) ENGINE=InnoDBDEFAULT CHARSET=latin1; |
CREATE TABLE`t_problem`( |
`C_ID` int(10)NOT NULL auto_increment, |
`C_TITLE` varchar(100)collate utf8_unicode_ci default NULL, |
`C_SOURCE` varchar(500)collate utf8_unicode_ci default NULL, |
`C_URL` varchar(500)collate utf8_unicode_ci default NULL, |
`C_originOJ` varchar(40)collate utf8_unicode_ci default NULL, |
`C_originProb` varchar(40)collate utf8_unicode_ci default NULL, |
`C_MEMORYLIMIT` int(10)default NULL, |
`C_TIMELIMIT` int(10) unsigneddefault NULL, |
`C_TRIGGER_TIME` datetimedefault NULL, |
PRIMARY KEY (`C_ID`) |
) ENGINE=InnoDBDEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; |
CREATE TABLE`t_replay_status`( |
`C_ID` int(10) unsignedNOT NULL auto_increment, |
`C_DATA` mediumtextcollate utf8_unicode_ci, |
PRIMARY KEY (`C_ID`) |
) ENGINE=InnoDBDEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; |
CREATE TABLE`t_submission`( |
`C_ID` int(10)NOT NULL auto_increment, |
`C_STATUS` varchar(100)collate utf8_unicode_ci default NULL, |
`C_TIME` int(10) unsigneddefault NULL, |
`C_MEMORY` int(10) unsigneddefault NULL, |
`C_SUBTIME` datetimedefault NULL, |
`C_PROBLEM_ID` int(10)default NULL, |
`C_USER_ID` int(10)default NULL, |
`C_CONTEST_ID` int(10)default NULL, |
`C_LANGUAGE` varchar(100) characterset utf8 collate utf8_bindefault NULL, |
`C_SOURCE` textcollate utf8_unicode_ci, |
`C_ISOPEN` int(10)default NULL, |
`C_DISP_LANGUAGE` varchar(100)collate utf8_unicode_ci default NULL, |
`C_USERNAME` varchar(40)collate utf8_unicode_ci default NULL, |
`C_ORIGIN_OJ` varchar(40)collate utf8_unicode_ci default NULL, |
`C_ORIGIN_PROB` varchar(40)collate utf8_unicode_ci default NULL, |
`C_IS_PRIVATE` int(10) unsigneddefault ‘0‘, |
`C_ADDITIONAL_INFO` textcollate utf8_unicode_ci, |
`C_REAL_RUNID` varchar(40)collate utf8_unicode_ci default NULL, |
PRIMARY KEY (`C_ID`), |
KEY `Index_problem_id`(`C_PROBLEM_ID`), |
KEY `Index_user_id`(`C_USER_ID`), |
KEY `Index_contest_id`(`C_CONTEST_ID`), |
KEY `Index_username`(`C_USERNAME`), |
KEY `Index_origin_prob`(`C_ORIGIN_PROB`) |
) ENGINE=InnoDBDEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; |
CREATE TABLE`t_user` ( |
`C_ID` int(10)NOT NULL auto_increment, |
`C_USERNAME` varchar(40)collate utf8_unicode_ci default NULL, |
`C_NICKNAME` varchar(100)collate utf8_unicode_ci default NULL, |
`C_PASSWORD` varchar(40)collate utf8_unicode_ci default NULL, |
`C_CREATETIME` datetimedefault NULL, |
`C_QQ` varchar(20)collate utf8_unicode_ci NOT NULL, |
`C_SCHOOL` varchar(100)collate utf8_unicode_ci NOT NULL, |
`C_EMAIL` varchar(100)collate utf8_unicode_ci NOT NULL, |
`C_BLOG` varchar(1000)collate utf8_unicode_ci NOT NULL, |
`C_SHARE` int(10) unsignedNOT NULL default ‘1‘, |
`C_SUP` int(10) unsignedNOT NULL default ‘0‘, |
PRIMARY KEY (`C_ID`) |
) ENGINE=InnoDBDEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; |
CREATE TABLE`t_vlog` ( |
`C_ID` int(10) unsignedNOT NULL auto_increment, |
`C_SESSIONID` varchar(40)default NULL, |
`C_IP` varchar(40)default NULL, |
`C_CREATETIME` datetimedefault NULL, |
`C_DURATION` int(10) unsigneddefault NULL, |
`C_REFERER` varchar(500)default NULL, |
`C_USERAGENT` varchar(500)default NULL, |
`C_LOGINER` int(10) unsigneddefault NULL, |
PRIMARY KEY (`C_ID`), |
KEY `Index_2`(`C_SESSIONID`) |
) ENGINE=InnoDBDEFAULT CHARSET=latin1; |
然后回车。这就建好了
6、查看数据表是否创建成功 show tables;
出现相应的表就成功了。
三、 代码实施(下载还是要进外网,用VPN)
1、下载vj最新开源代码https://code.google.com/p/virtual-judge/downloads/list
2、在tomcat安装目录下的webapps目录下新建名为judge的文件夹,并将下载的文件解压到目录下。
3、修改以下配置文件
WEB-INF/db.properties、
修改DBPASS数据库密码(之前自己设置的)
WEB-INF/web.properties、
本地测试注释前三行,远端访问注释后三行(注释即在行前边加#号),并将basePath设置为http:yourip:8080/judge
yourip:你的ip地址,在终端中输入ipconfig,找到本机IP地址
4、在WEB-INF新建
accounts.conf文件,该文件存放各oj系统的账号密码
内容格式为
POJyourusername yourpassword
四、Thenit should work
我弄完之后登录OJ交题出现题目一直PENGIND的情况,如果你也出现,解决办法如下
判题程序judged需要用root帐号启动,请重启服务器或手动执行sudojudged。如果无效,请检查/home/judge/etc/judge.conf中的数据库账号配置,把其中的root密码和admin的密码改成自己设置的。
参考Configuration,修正后再次重启服务器或执行sudo pkill-9 judged等待一会儿再执行sudo judged
下图是成功的标志。。。