First of all, this version hustoj is a skin and improved for . So the you can migrate the old version web to this version without any big chance.
This guide is not a deep tutorial for beginner, the base step for os and backend you should reference the old version of hustoj.
MySQL
- run the origin hustoj db script
- run the db alter script
set names utf8; create database judge;use judge;CREATE TABLE `compileinfo` ( `solution_id` int(11) NOT NULL DEFAULT '0', `error` text, PRIMARY KEY (`solution_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `contest` ( `contest_id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `start_time` datetime DEFAULT NULL, `end_time` datetime DEFAULT NULL, `defunct` char(1) NOT NULL DEFAULT 'N', `description` text, `private` tinyint(4) NOT NULL DEFAULT '0', `langmask` int NOT NULL DEFAULT '0' COMMENT 'bits for LANG to mask', PRIMARY KEY (`contest_id`)) ENGINE=MyISAM AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;CREATE TABLE `contest_problem` ( `problem_id` int(11) NOT NULL DEFAULT '0', `contest_id` int(11) DEFAULT NULL, `title` char(200) NOT NULL DEFAULT '', `num` int(11) NOT NULL DEFAULT '0') ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `loginlog` ( `user_id` varchar(48) NOT NULL DEFAULT '', `password` varchar(40) DEFAULT NULL, `ip` varchar(100) DEFAULT NULL, `time` datetime DEFAULT NULL, KEY `user_log_index` (`user_id`,`time`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `mail` ( `mail_id` int(11) NOT NULL AUTO_INCREMENT, `to_user` varchar(48) NOT NULL DEFAULT '', `from_user` varchar(48) NOT NULL DEFAULT '', `title` varchar(200) NOT NULL DEFAULT '', `content` text, `new_mail` tinyint(1) NOT NULL DEFAULT '1', `reply` tinyint(4) DEFAULT '0', `in_date` datetime DEFAULT NULL, `defunct` char(1) NOT NULL DEFAULT 'N', PRIMARY KEY (`mail_id`), KEY `uid` (`to_user`)) ENGINE=MyISAM AUTO_INCREMENT=1013 DEFAULT CHARSET=utf8;CREATE TABLE `news` ( `news_id` int(11) NOT NULL AUTO_INCREMENT, `user_id` varchar(48) NOT NULL DEFAULT '', `title` varchar(200) NOT NULL DEFAULT '', `content` text NOT NULL, `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `importance` tinyint(4) NOT NULL DEFAULT '0', `defunct` char(1) NOT NULL DEFAULT 'N', PRIMARY KEY (`news_id`)) ENGINE=MyISAM AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8;CREATE TABLE `privilege` ( `user_id` char(48) NOT NULL DEFAULT '', `rightstr` char(30) NOT NULL DEFAULT '', `defunct` char(1) NOT NULL DEFAULT 'N') ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `problem` ( `problem_id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL DEFAULT '', `description` text, `input` text, `output` text, `sample_input` text, `sample_output` text, `spj` char(1) NOT NULL DEFAULT '0', `hint` text, `source` varchar(100) DEFAULT NULL, `in_date` datetime DEFAULT NULL, `time_limit` int(11) NOT NULL DEFAULT '0', `memory_limit` int(11) NOT NULL DEFAULT '0', `defunct` char(1) NOT NULL DEFAULT 'N', `accepted` int(11) DEFAULT '0', `submit` int(11) DEFAULT '0', `solved` int(11) DEFAULT '0', PRIMARY KEY (`problem_id`)) ENGINE=MyISAM AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;CREATE TABLE `reply` ( `rid` int(11) NOT NULL AUTO_INCREMENT, `author_id` varchar(48) NOT NULL, `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `content` text NOT NULL, `topic_id` int(11) NOT NULL, `status` int(2) NOT NULL DEFAULT '0', `ip` varchar(30) NOT NULL, PRIMARY KEY (`rid`), KEY `author_id` (`author_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `sim` ( `s_id` int(11) NOT NULL, `sim_s_id` int(11) DEFAULT NULL, `sim` int(11) DEFAULT NULL, PRIMARY KEY (`s_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `solution` ( `solution_id` int(11) NOT NULL AUTO_INCREMENT, `problem_id` int(11) NOT NULL DEFAULT '0', `user_id` char(48) NOT NULL, `time` int(11) NOT NULL DEFAULT '0', `memory` int(11) NOT NULL DEFAULT '0', `in_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `result` smallint(6) NOT NULL DEFAULT '0', `language` INT UNSIGNED NOT NULL DEFAULT '0', `ip` char(15) NOT NULL, `contest_id` int(11) DEFAULT NULL, `valid` tinyint(4) NOT NULL DEFAULT '1', `num` tinyint(4) NOT NULL DEFAULT '-1', `code_length` int(11) NOT NULL DEFAULT '0', `judgetime` datetime DEFAULT NULL, `pass_rate` DECIMAL(2,2) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`solution_id`), KEY `uid` (`user_id`), KEY `pid` (`problem_id`), KEY `res` (`result`), KEY `cid` (`contest_id`)) ENGINE=MyISAM AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8;CREATE TABLE `source_code` ( `solution_id` int(11) NOT NULL, `source` text NOT NULL, PRIMARY KEY (`solution_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `topic` ( `tid` int(11) NOT NULL AUTO_INCREMENT, `title` varbinary(60) NOT NULL, `status` int(2) NOT NULL DEFAULT '0', `top_level` int(2) NOT NULL DEFAULT '0', `cid` int(11) DEFAULT NULL, `pid` int(11) NOT NULL, `author_id` varchar(48) NOT NULL, PRIMARY KEY (`tid`), KEY `cid` (`cid`,`pid`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `users` ( `user_id` varchar(48) NOT NULL DEFAULT '', `email` varchar(100) DEFAULT NULL, `submit` int(11) DEFAULT '0', `solved` int(11) DEFAULT '0', `defunct` char(1) NOT NULL DEFAULT 'N', `ip` varchar(20) NOT NULL DEFAULT '', `accesstime` datetime DEFAULT NULL, `volume` int(11) NOT NULL DEFAULT '1', `language` int(11) NOT NULL DEFAULT '1', `password` varchar(32) DEFAULT NULL, `reg_time` datetime DEFAULT NULL, `nick` varchar(100) NOT NULL DEFAULT '', `school` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `online` ( `hash` varchar(32) collate utf8_unicode_ci NOT NULL, `ip` varchar(20) character set utf8 NOT NULL default '', `ua` varchar(255) character set utf8 NOT NULL default '', `refer` varchar(255) collate utf8_unicode_ci default NULL, `lastmove` int(10) NOT NULL, `firsttime` int(10) default NULL, `uri` varchar(255) collate utf8_unicode_ci default NULL, PRIMARY KEY (`hash`), UNIQUE KEY `hash` (`hash`)) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;CREATE TABLE `runtimeinfo` ( `solution_id` int(11) NOT NULL DEFAULT '0', `error` text, PRIMARY KEY (`solution_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `custominput` ( `solution_id` int(11) NOT NULL DEFAULT '0', `input_text` text, PRIMARY KEY (`solution_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
datavase changed:
# support languageALTER TABLE users ADD locale CHAR(7) NULL; # support user themeALTER TABLE users ADD theme CHAR(30) NULL; # add option tableCREATE TABLE `options` ( `option_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL DEFAULT '', `desc` varchar(128) NOT NULL DEFAULT '', `value` varchar(128) NOT NULL DEFAULT '', PRIMARY KEY (`option_id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;INSERT INTO `options` (`option_id`, `name`, `desc`, `value`)VALUES (2, 'ga_code', 'Google Analytics Code', 'UA-YOURCODE-1');
Web
git clone https://github.com/freefcw/hustoj.git
into the code to your webdocs- follow the guide. notice, the old extension of mysql for php is deprecated, so you need use MySQLi, or PDO
configuren guide:
the config file is locate applicaiton/config directory
-
cp production/database.sample.php to production/database.php, set your database information
-
cp base.sample.php to base.php, set domain and base_url, domain should not contain the port
problems:
skys215 commented on 2 Aug 2014When wil the Installation sction will be updated?I downloaded it, but I cannot install.Regards,@freefcwOwnerfreefcw commented on 5 Aug 2014I will do it when I have enough time, you can install use the old judge database from google code@dotkrnlCollaboratordotkrnl commented on 5 Aug 2014With an installed Google Code version HUSTOJ. See hints in https://github.com/freefcw/hustoj/wiki/database-changed and https://github.com/freefcw/hustoj/wiki/configure . This project just refactored the front-end.@skys215skys215 commented on 6 Aug 2014I did as you guys said, But it remains "出错了,请联系 freefcw#gmail".@skys215skys215 commented on 6 Aug 2014I got the 500 Http Response andthis error message: Database_Exception [ 8192 ]: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead@freefcwOwnerfreefcw commented on 6 Aug 2014please choose mysqli or pdo in database.php. the mysql driver is deprecated in the newest php version@skys215skys215 commented on 6 Aug 2014Yes, it solved the problem.But there's annother problem:When I click the links on the navbar, it get an 404 error. (eg.http://127.0.0.1:8889/problem/list)But when I add index.php in the url, then it's ok.(eg. http://127.0.0.1:8889/index.php/problem/list)Is it my Apache Configuration's problem?Update:It was my Apache Configuration's problem, AllowOverride was set to None.It works perfect after changed it to All and restarting the Apache.Thanks for the help!@skys215skys215 commented on 10 Aug 2014HustOJ works well at my localhost, but there's an error running on my vps.ErrorException [ Fatal Error ]: Call to undefined function __()SYSPATH/classes/Kohana/Kohana/Exception.php [ 53 ]It seems that I18n.php didn't load propperly.Update:One of my friend who is familiar with Kohana said, I need to give permissions to the application/cache/ and application/logs/ after that, the problem is solved.@freefcwOwnerfreefcw commented on 11 Aug 2014yes, you should che the owner of the webdocs, chmod -R www-data:www-data DIR@skys215skys215 commented on 11 Aug 2014After asking a net-friend, he said that the judging system is not in this repository.This repository is just another web interface of the judging system.So I checkout the judge system which is in SVN, and did the sudo bash install/install-interactive.sh.This time, I can open the online judge, I can add problem, submit code and judge the code on localhost.But when I did the same thing on my vps, it seems that it can create the Problem-Id directory in the /home/judge/data, I don't know why. If I create the directory manualy, then the code could be accepted.@qhpeklh5959qhpeklh5959 commented on 28 Oct 2014I've configed the database and permission of the dictionary, but I get "出错了,请联系 freefcw#gmail". I wonder if I've made some mistake??@freefcwOwnerfreefcw commented on 29 Oct 2014please check the error log for the detail@qhpeklh5959qhpeklh5959 commented on 29 Oct 20142014-10-29 09:03:05 --- DEBUG: #0 /var/www/hustoj/system/classes/Kohana/Request.php(986): Kohana_HTTP_Exception::factory(404, 'Unable to find ...', Array)#1 /var/www/hustoj/index.php(105): Kohana_Request->execute()#2 {main} in /var/www/hustoj/system/classes/Kohana/Request.php:98How to fix it?@freefcwOwnerfreefcw commented on 29 Oct 2014The imformation is hide the most important, please give me the whole log.Seems route set has some problem in route, did u installed in subdirectory?@jcf94jcf94 commented on 26 Apr 2015I think I get a same error like qhpeklh5959 do .....Here is my log:2015-04-26 16:20:42 --- EMERGENCY: HTTP_Exception_404 [ 404 ]: The requested URL hustoj was not found on this server. ~ SYSPATH/classes/Kohana/HTTP/Exception.php [ 19 ] in /var/www/html/hustoj/system/classes/Kohana/Request/Client/Internal.php:792015-04-26 16:20:42 --- DEBUG: #0 /var/www/html/hustoj/system/classes/Kohana/Request/Client/Internal.php(79): Kohana_HTTP_Exception::factory(404, 'The requested U...', Array)#1 /var/www/html/hustoj/system/classes/Kohana/Request/Client.php(114): Kohana_Request_Client_Internal->execute_request(Object(Request), Object(Response))#2 /var/www/html/hustoj/system/classes/Kohana/Request.php(997): Kohana_Request_Client->execute(Object(Request))#3 /var/www/html/hustoj/index.php(105): Kohana_Request->execute()#4 {main} in /var/www/html/hustoj/system/classes/Kohana/Request/Client/Internal.php:79@FoxprodevFoxprodev commented on 21 May 2015Same error. What should i do?@freefcwOwnerfreefcw commented on 24 May 2015@xff252595680 @FoxprodevPlease show me your nginx or apache site config file@FoxprodevFoxprodev commented on 25 May 2015@freefcw Already fixed it, AllowOverride in this directory.But how to fix http://stackoverflow.com/questions/4624726/http-error-302-using-uploadify?In firefox, safari, os x browsers.
注意:
如果加了.htaccess文件出现500错误,有可能 没有开启rewrite模块
后来查到这是因为Php没有开启rewrite模块而无法重定向
启用 Mod_rewrite 模块:
sudo a2enmod rewrite
Admin
- open the site and register a user as the master admin.
- run the sql script
insert into privilege(user_id,rightstr) values('admin','administrator');
admin is the username of your registered