我们用于比赛和刷题的OJ是用LiveCD版的HUSTOJ搭建的,一开始用着觉得没啥问题,但是在后来的使用过程中发现了很多问题(比如说最头疼的就是gcc一升级就没法开机...),最后不得已决定之后将OJ迁移到一台真正的Ubuntu机器上去。于是乎这个任务就交给我这个菜鸟来执行了,过程还是比较顺利(无脑)的,感谢HUSTOJ,感谢zhblue老师。
百度上能找到一篇非常不错的文章Ubuntu下安装hustoj的步骤,看这篇文章基本上就完全能在Ubuntu上搭起Hustoj了,下面的步骤大多都与那篇文章作者描述相同。
以下简述搭建步骤:
一、前期准备(给同是菜鸟的人看的)
1. 一台装有Ubuntu系统的机器或一台装有的Ubuntu系统的虚拟机(一般VBox或VMWare)
2. 会最基本的linux操作,比如打开终端(Ctrl+Alt+T)等
3. 会最基本的linux命令(大概知道sudo是管理员权限执行操作,需要在图形界面获取复制粘贴和删除权限要在终端输入sudo nautilus等最基础的指令就行了)
二、安装基础环境
1. 在安装基础环境前先确认你没有执行其它的更新操作,否则可能会报获取不到锁等错误
2. 打开终端,可以先输入 sudo su 获取root权限以避免之后还要反复地输入sudo(输入完sudo su后会让你输密码,该密码是安装时设定的用户密码,也是Ubuntu里该用户的登录密码,如果是第一次执行该操作,还有可能会再让你设置root密码,以下假设在没有获取root权限下进行操作)
3. 安装文本编辑器gedit:这个一般会自带,如果没有的话可输入 sudo apt-get install gedit 进行安装
3. 安装mysql:sudo apt-get install mysql-server mysql-client 安装过程中会提示输入mysql里root账号的密码...别把这个密码忘记了....
4. 安装apache2:sudo apt-get install apache2 安装过程中会问你确认下,直接输入y确定即可,需要注意的是Ubuntu的配置文件是apache2.conf,在/etc/apache2/目录下,而不是windows的httpd.conf
5. 在firefox上输入localhost并回车,如果能显示出一个apache2的网页,那说明安装成功了
6. 修改服务器根目录:sudo gedit /etc/apache2/sites-enabled/000-default.conf
找到DocumentRoot,将目录改为 /var/www/
7. 安装PHP:sudo apt-get install php5 libapache2-mod-php5
8. 检测PHP有没安装成功:sudo gedit,打开gedit并输入<?php phpinfo();?> 然后将文件保存在/var/www/目录下,最后在浏览器中输入localhost/info.php 若显示出php信息页面,则安装成功
三、安装HUSTOJ
1. 先确认网络能否访问github 若不能,翻墙吧....
2. 安装前先更新源:sudo apt-get update
3. 安装svn:sudo apt-get install subversion
4. 从github上获取代码:sudo svn co https://github.com/zhblue/hustoj/trunk/trunk/install hustoj
5. 打开代码保存目录:cd hustoj
6. 安装:sudo bash install-interactive.sh
7. 前台目录(JudgeOnline)可能会安装到/var/www/html/ 目录下去了,此时需要sudo nautilus 打开 /var/www/html/ 如果真的在这里,将其移动到/var/www/目录下即可
8. 打开http://127.0.0.1/JudgeOnline看是否能正常访问页面
9. 提交下A+B试试 如果一直在“等待”,说明judged没启动,可先重启Ubuntu试试。一般一直在“等待”中都是judged没启动导致的,可输入ps -A | grep judged 查看是否启动,若有字样,则说明已启动,若无,可输入sudo judged启动
四、文件迁移
1. 从原OJ中导出数据库(后面的~/jol.sql可自己选一个目录,~/jol.sql表示导出到该用户的根目录的,文件名为jol.sql):mysqldump -uroot -p jol > ~/jol.sql
可能会报这个错
原因是有个叫squid的视图的定义者是zhblue,要么把这个视图的定义者修改成root,要么给root授予所有权限
给root授予所有权限(最后双引号里的xxx是你的root密码):grant all privileges on *.* to root@"%" identified by "xxx";
刷新一下:flush privileges;
再执行 mysqldump -uroot -p jol > ~/jol.sql 就可以看到/home/username/ 目录下有个jol.sql文件了(这里的username是你Ubuntu用户对应的名字)
2. 复制jol.sql文件到新的机器上,登录mysql:mysql -uroot -p 登录后用指令source route/jol.sql 导入sql文件(其中route为对应的路径名)
3. 将原OJ中/home/中的judge文件夹复制,并拷入新OJ的/home/中(若新旧OJ数据库密码不一致,还需要再修改/home/judge/etc/judge.conf中的数据库密码),复制粘贴过程建议使用sudo nautilus。另外,因为测试数据全在judge/data目录中,如果忘记复制judge目录,可能导致判题时一直处于“运行并评判”状态
4. 如果对前台代码进行过改动的,将原OJ的前台代码(即JudgeOnline文件夹中的代码)也复制过去
5. 如果是旧版本的hustoj,数据库可能与最新版不一致,最好先将hustoj更新到最新版,更新方法可以见张老师的博客升级HUSTOJ(http://www.hustoj.com/?p=47)
到此为止,基本大功告成了!
Ubuntu 15.04 LiveCD上手体验:http://www.linuxdiyf.com/linux/11628.html
惊艳难敌:Kubuntu 15.04 Live评测:http://www.linuxdiyf.com/linux/11747.html