OJ的搭建
哎,想当年,耀哥在的时候,我们学校在青岛这边还是很好地,可是从那以后,一代不如一代呀,周边的学校渐渐都起来了,我们学校至今还没有自己的OJ,于是厚着脸皮,各处求助,终于搭好了现在这样的OJ。感谢山建的聚聚(http://blog.csdn.net/hy1405430407/article/details/48626771)热心的帮助,才得以搭出来,真是万分感谢呀!接下来,我将重新搭一遍,来帮助像我
哎,想当年,耀哥在的时候,我们学校在青岛这边还是很好地,可是从那以后,一代不如一代呀,周边的学校渐渐都起来了,我们学校至今还没有自己的OJ,于是厚着脸皮,各处求助,终于搭好了现在这样的OJ。感谢山建的聚聚(http://blog.csdn.net/hy1405430407/article/details/48626771)热心的帮助,才得以搭出来,真是万分感谢呀!接下来,我将重新搭一遍,来帮助像我一样,什么都不会的人,来搭博客。。。
一、连接服务器
1.首先感谢阿里云(新手可以免费试用15天)先让我在上面试试水。http://free.aliyun.com/注册之后,就可以免费体验15天了,不过
照模板搭起来,这时间搓搓有余啦。(申请后台服务器最好选ubuntu啦,接下来,我搭的OJ环境都是以Ubuntu14.04 64位环境下搭
建的)。
2.下载Xshell(这个直接百度就有),直接安装就行了,刚开始的界面如下第一个图所示:
然后点击上面的文件->新建,就得到了第二个界面。
3.进入云服务器ECS,点击实例,就能看到右边这一栏,中有一个IP,在上图的主机上填写这一IP即可,然后再点击确定,再点击链
接。
4.这时,会弹出一个对话框,要你输入用户名,默认用户名就是root,所以输入root即可,密码,即为你最开始的密码(包括大小写
字母和数字的)。
5.接下来,再回到云服务器实例那个网页,点击实例ID下,蓝色的那个ID,点击基本信息那一栏的”更多“里面的”链接管理终端“,这
时会跳出一个初始管理终端链接密码(记下来,以后都会用到的,也可以改成自己记得住的密码也行)。这时,再将刚才第4步要
你输入的用户名和密码,再输入一次,即可。
6.然后重新回到Xshell,再一次点击文件,不过这次是选择打开,然后输入用户名和密码。现在Xshell的界面就是ubuntu的刚才第五
步网页上一样的界面了,直接在Xshell操作即可。
二、安装vncserver来实现图形化访问
7.不过,现在是有了操作系统,但是界面很不友好,并不是很好操作,这时,我们就需要安装一个vncserver来实现图形化访问。参
考网址:http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974461。
8.首先尝试使用命令#apt-get update更新软件源后尝试安装。如果不行,需要更换软件源。更换步骤如下:
a)输入命令#cp /etc/apt/sources.list /etc/apt/sources.list_backup
b)输入命令#vi /etc/apt/sources.list
c)添加其他软件源(推荐使用163、中科大、上海交大等速度较快的国内源)
d)保存并关闭窗口
e)输入命令:#apt-get update
9.接下来使用命令:
apt-get install vnc4server
10.开启vnc服务,输入命令:
vncserver
首次启动会要求设置密码,后面可以使用vncpasswd修改;
看到 New ‘****:1 (****)’ desktop is ****:1 (****代表主机名)即表示启动vnc成功,在主目录下产生一个.vnc目录;其中Verify是重新输
入密码,确认密码的意思。
11.接下来再下载vncviewer,地址链接:http://www.realvnc.com/download/viewer/,根据自己用的版本进行下载即可。
12.VNC Server栏中输入云服务器的IP:1(看清楚是:ip:1),然后点击Connect,继续点击Continue,这时会让你输入刚才设置
vncserver的密码,然后点击OK即可。
三、将桌面改成GNOME或KDE
13.但是,现在这个页面(如下图)好像并不是我们想要的图形化界面。vncserver默认使用的窗口管理器是twm,这是一个很简陋的
窗口管理器,下面我们把桌面改成GNOME或KDE。
14.接下里,换成Xshell,备份原有xstartup文件:
sudo cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
下面我们需要修改vnc启动文件,使用命令:
sudo vi ~/.vnc/xstartup
打开后如下图所示:
我们需要把上图中“x-window-manager &”这一行注释掉,然后在下面加入一行“gnome-session &”,或者是“startkde &”,分别启动
GNOME桌面和KDE桌面。这里我们安装的是GNOME桌面。修改后如下图所示:(具体修改步骤:打开文件后,点击“insert”按钮
(进入insert模式),这时就可以输入了,在“x-window-manager &”前加“#”,然后回车输入“gnome-session &”,然后点击“Esc ”退出
编辑模式,输入“:wq!”保存修改即可)
15.这时我们需要杀掉原桌面进程,输入命令: vncserver -kill :1//这里的:1是桌面号
再次输入: vncserver :1生成新的会话
16.下面我们开始安装gnome桌面环境
这里的安装有些慢,需要您耐心等待下。
(1)安装x-windows的基础 :
sudo apt-get install x-window-system-core
(2)安装登录管理器:
sudo apt-get install gdm (还可以为kdm/xdm)
(3)安装Ubuntu的桌面:
sudo apt-get install ubuntu-desktop(还可以为Kubunut-desktop/ Xubuntu-desktop )
另外:
安装命令:apt-get install gnome-core可以安装GNOME的一些基础。apt-get install firefox/gaim/xmms可以安装 Firefox 浏览器、
Gaim 聊天程序、XMMS 音乐播放器。您可以按照自己的喜好来安装。
17.下面我们重复步骤5,, 输入命令:vncserver -kill :1杀掉原桌面进程,
再次输入:vncserver :1生成新的会话。然后使用vnc客户端连接,就可以看到图形化界面,如图:
四、安装mysql-server mysql-client
18.接下来就用vncviewer来进行操作,输入 apt-get install mysql-server mysql-client,安装的过程会弹出一个框,输入sql密码,然后按TAB切换到ok
即可。
五、安装apache2
19.接着输入 apt-get install apache2(这里要说明一下的就是ubuntu下的apache默认网页执行文件夹在/var/www/下面,配置文件
在/etc/apache2/apache2.conf,配置文件子目录在/etc/apache2/下)。
然后输入apt-get update,输入:firefox(进入游览器),再输入:http://localhost,如果出现如下界面,则说明刚才的操作基本无误,即可进行下一步
骤。
六、安装php
20.把刚才网页叉掉,接下来就可以安装php了,输入
apt-get install php5 libapache2-mod-php5
重启apache,输入
/etc/init.d/apache2 restart
然后安装文本编辑器gedit,输入
apt-get install gedit
然后输入gedit(即将gedit打开),输入一下内容<?php phpinfo();?>
另存为/var/www/html/info.php
然后输入firefox(即打开游览器),在浏览器输入
http://localhost/info.php,如出现如下界面(出现php的一系列属性),则LAMP环境就完成了。
七、安装hustoj
21.把刚才网页叉掉,接下来就可以开始安装OJ了,输入
sudo apt-get install subversion
22.接着再输入
sudo svn co https://github.com/zhblue/hustoj/trunk/trunk/install hustoj
得到如下界面:
23.输入:
cd hustoj
sudo bash install-interactive.sh
再输入自己MYSQL的账号(默认为root)和密码.(这步时间等的有点长)
这个是github上最新的源,因为google code被墙了,所以迁移到了github上。
hustoj安装完默认只能判c和c++代码,接着输入:
sudo apt-get install openjdk-7-jdk
sudo apt-get install fpc
分别安装java和pascal编译环境(这样OJ上就支持java和pascal提交了)
八、添加管理员权限
24.运行JudgeOnline
输入:http://localhost/JudgeOnline
或者http://127.0.0.1/JudgeOnline即可
如果出现类似这样的问题,应该是数据库没连接上
Could not connect: Access denied for user 'root'@'localhost'(using password: YES)
数据库的配置文件在var/www/html/judgeonline/include中的db_info.inc.php
使用gedit打开修改就好,db_info.inc.php的具体分析如下:
db_info.inc.php
static $DB_HOST="localhost"; 数据库的服务器地址
static $DB_NAME="jol"; 数据库名
static $DB_USER="root"; 数据库用户名
static $DB_PASS="root"; 数据库密码
// connect db
static $OJ_NAME="HUSTOJ"; OJ的名字,将取代页面标题等位置HUSTOJ字样。
static $OJ_HOME="./"; OJ的首页地址
static $OJ_ADMIN="root@localhost"; 管理员email
static $OJ_DATA="/home/judge/data"; 测试数据所在目录,实际位置。
static $OJ_BBS="discuss";//"bbs" 论坛的形式,discuss为自带的简单论坛,bbs为外挂论坛,参考bbs.php代码。
static $OJ_ONLINE=false; 是否使用在线监控,需要消耗一定的内存和计算,因此如果并发大建议关闭
static $OJ_LANG="en"; 默认的语言,中文为cn
static $OJ_SIM=true; 是否显示相似度检测的结果。
static $OJ_DICT=true; 是否启用在线英字典
static $OJ_LANGMASK=1008; //1mC 2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason to mask all other language 用掩码表示的OJ接受的提交语言,可以被比赛设定覆盖。
static $OJ_EDITE_AREA=true;// 是否启用高亮语法显示的提交界面,可以在线编程,无须IDE。
static $OJ_AUTO_SHARE=false;//true: 自动分享代码,启用的话,做出一道题就可以在该题的Status中看其他人的答案。
static $OJ_CSS="hoj.css"; 默认的css,可以选择dark.css和gcode.css,具有有限的界面制定效果。
static $OJ_SAE=false; //是否是在新浪的云平台运行web部分
static $OJ_VCODE=true; 是否启用图形登录、注册验证码。
static $OJ_APPENDCODE=false; 是否启用自动添加代码,启用的话,提交时会参考$OJ_DATA对应目录里是否有append.c一类的文件,有的话会把其中代码附加到对应语言的答案之后,巧妙使用可以指定main函数而要求学生编写main部分调用的函数。
static $OJ_MEMCACHE=false;是否使用memcache作为页面缓存,如果不启用则用/cache目录
static $OJ_MEMSERVER="127.0.0.1"; memcached的服务器地址
static $OJ_MEMPORT=11211; memcached的端口
25.注册帐号测试admin功能
比如说我现在将 admin设置为管理员;
第一步:终端进入 输入sudo su 输密码;
第二步:输入:mysql –u root –p 回车,然后输密码 进入mysql;
第三步:输入:show databases;查看所有数据库
第四步:输入:use jol;(hustoj用户数据库) 要想进去的话就输入select * from jol;
第五步:输入:
insert into privilege(user_id,rightstr)values('admin','administrator');
如果你的帐号叫zhangkun,那么需要更改帐号部分,如:
insert into privilege(user_id,rightstr)values('zhangkun','administrator');
最后域名如果有可以是用自己的域名,我使用的是tk域名,dot.tk,将域名解析到云服务器上就好。
九、清理漏洞
26.Apache的目录浏览问题:
vim /etc/apache2/apache2.conf
然后利用vim查找的快捷方式(输入:/Options Indexes FollowSymLinks)
找到 Options Indexes FollowSymLinks
修改为 Options -Indexes (减号就代表取消),如下图所示:
按esc退出,再保存退出(:wq!),重新启动Apache
/etc/init.d/apache2 restart
27.云体检通用代码补丁(http://bbs.aliyun.com/read.php?spm=5176.775974673.2.5.BZqx2r&tid=137391\)
输入:
vim /etc/php5/apache2/php.ini
然后利用vim查找的快捷方式(输入:/ auto_prepend_file)
找到auto_prepend_file,
修改为:
Automatically add files before or after any PHP document;
auto_prepend_file = waf.php#绝对路径;
如下图所示:
按esc退出,再保存退出(:wq!)。
28.下载WinSCP(地址链接:http://www.crsky.com/soft/10088.html),并安装,登陆(主机名:IP,用户名:root,密码:你自己
设置的)将php代码补丁上传到 /var/www/html这个目录下。
这样一来,云补丁就弄好了。
29.下载图片,并修改:
利用WinSCP在/var/www/html/JudgeOnline/template/image下载background.jpg文件然后再改改,再上传即可。
30.下载,一个完整的OJ基本完成了,现在只需要做一下小修剪即可。
输入:
cd /var/www/html
sudo rm info.php
删除info.php,因为没用,而且还会有漏洞
接下里输入:
gedit
用open找到/var/www/html/index.html;
将里面的内容全部删除,并改为自己想显示的内容。原来的内容如下:
为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)