[oj维护日记]LiveCD版HUSTOJ迁移至Ubuntu 15.04试验
来源:互联网 发布:苏亚雷斯进球数据 编辑:程序博客网 时间:2024/05/22 17:36
(前方高能坑预警:请将正式使用的OJ部署在Ubuntu12.04或14.04上,部署在15.04之后可能会遇到非常多奇怪的问题)
我们用于比赛和刷题的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 -y 安装过程中会提示输入mysql里root账号的密码...别把这个密码忘记了....
4. 安装apache2:sudo apt-get install apache2 -y 需要注意下Ubuntu的配置文件是apache2.conf,在/etc/apache2/目录下,而不是windows的httpd.conf。另外,用以上方式安装,Ubuntu14.04之后的版本和12.04版的DocumentRoot是不同的,12.04是 /var/www/ 而14.04和15.04是 /var/www/html/
5. 在firefox上输入localhost并回车,如果能显示出一个apache2的网页,上面写着“It works”,那说明安装成功了(Ubuntu12.04用以上方式安装的后localhost显示的页面不一定和下图相同)
6. 安装PHP:sudo apt-get install php5 libapache2-mod-php5 -y
7. 检测PHP有没安装成功:sudo gedit,打开gedit并输入<?php phpinfo();?> 然后将文件保存在/var/www/html/目录下(Ubuntu12.04则在/var/www/ 目录下),最后在浏览器中输入localhost/info.php 若显示出php信息页面,则安装成功
三、安装HUSTOJ
1. 先确认网络能否访问github 若不能,翻墙吧....
2. 安装前先更新源:sudo apt-get update
3. 安装svn:sudo apt-get install subversion -y
4. 从github上获取代码:sudo svn co https://github.com/zhblue/hustoj/trunk/trunk/install hustoj
5. 打开代码保存目录:cd ~/hustoj
6. 安装:sudo bash install-interactive.sh -y 安装过程中需要输入mysql用户名和密码,用户名直接用root,密码为刚才安装mysql时设置的密码(对于Ubuntu 12.04 还需要先在/var/www/ 目录下创建一个html目录,因为该语句默认将网页代码放到 /var/www/html/ 目录下,如果代码没获取成功,有可能是网络问题,可以再执行一次试试)
7. 打开http://127.0.0.1/JudgeOnline看是否能正常访问页面
8. 此时的OJ时没有一个用户的,如果要将此OJ作为一个全新独立的OJ(即不导入原OJ数据)使用,需要先注册一个用户(如果直接从原OJ导入,则忽略此步),先点击OJ右上角的“注册”,注册一个用户名为admin,密码为123456的用户(密码长度需要大于等于6位),然后打开终端,输入 mysql -uroot -p 进入数据库,再输入 use jol 选择jol数据库,最后输入insert into privilege(user_id, rightstr) values ('admin', 'administrator'); 将用户名为admin的账户设置为管理员(administrator)权限,最后重新登录下admin,右上角就会多出个“管理”字样了
9. 代码位置迁移以及修改服务器根目录(此处以迁移至www目录为例,若不想迁移可忽略此步):如果还在mysql界面,先输入exit退出mysql,然后再终端界面输入 sudo nautilus 打开文件管理器,进入/var/www/html/ 找到JudgeOnline文件夹,将其剪切至/var/www/ 目录。打开目录 /etc/apache2/sites-enabled/ 找到 000-default.conf 文件并打开,并找到DocumentRoot这一行,将目录改为 /var/www/JudgeOnline/ 修改完后保存并关闭文件,顺便把终端也给关闭了。
最后重新打开终端,输入 sudo /etc/init.d/apache2 restart 重启apache服务器,再次在浏览器上输入localhost即可进入OJ
四、文件迁移
1. 从原OJ中导出数据库(后面的~/jol.sql可自己选一个目录,~/jol.sql表示导出到该用户的根目录的,文件名为jol.sql):mysqldump -uroot -p jol > ~/jol.sql
导出的过程中可能会报“The user specified as a definer ('zhblue'@'%') does not exist when using LOCK TABLE” 错误,原因是有个叫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 登录后输入:use jol 选择jol数据库,然后用指令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
6. 提交下A+B试试 如果一直在“等待”,说明judged没启动,可先重启Ubuntu试试。一般一直在“等待”中都是judged没启动导致的,可输入ps -A | grep judged 查看是否启动,若有字样,则说明已启动,若无,可输入sudo judged启动
到此为止,基本大功告成了!
- [oj维护日记]LiveCD版HUSTOJ迁移至Ubuntu 15.04试验
- [oj维护日记]HUSTOJ添加系统调用
- [oj维护日记]HUSTOJ添加已支持的语言
- Hustoj LiveCD版系统root、数据库root及oj管理员密码的修改
- 将HUSTOJ从Centos6.9成功迁移至Ubuntu 14.04
- hustoj 维护日志
- hustoj数据迁移
- Linux下制作ubuntu系统的u盘启动版LiveCD和直接硬盘启动LiveCD
- 收到Ubuntu的LiveCD
- 从零开始构建Ubuntu LiveCD
- UCK制作Ubuntu livecd
- pxe ubuntu livecd
- 从零开始构建Ubuntu LiveCD
- Ubuntu自制liveCD学习
- ubuntu 安装 HUSTOJ
- 使用Ubuntu LiveCD安装grub
- 把Ubuntu LiveCD装进硬盘
- [转]ubuntu LiveCD制作
- css3学习笔记(二)---选择器(包含部分css2选择器)
- 视频与图像RGB/YUV格式详解
- hdoj 2094 产生冠军 【水】
- 抽象方法和接口的区别
- Win7系统出现乱码的解决办法(转载)
- [oj维护日记]LiveCD版HUSTOJ迁移至Ubuntu 15.04试验
- JAVA&Android随记(5)
- RGB与YUV图像视频格式的相互转换
- C#学习笔记-WPF前端布局和控件的使用
- 配置Cocos2d-x
- 计算机丢失opencv_world300.dll文件
- ManualResetEvent和AutoResetEvent的区别
- matlab--out of memory
- linux 线程编程:线程创建