OJ的搭建

来源:互联网 发布:路由器mac地址有什么用 编辑:程序博客网 时间:2024/06/05 04:17

        哎,想当年,耀哥在的时候,我们学校在青岛这边还是很好地,可是从那以后,一代不如一代呀,周边的学校渐渐都起来了,我们学校至今还没有自己的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_backupb)输入命令#vi /etc/apt/sources.listc)添加其他软件源(推荐使用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 hustojsudo bash install-interactive.sh

再输入自己MYSQL的账号(默认为root)和密码.(这步时间等的有点长)

这个是github上最新的源,因为google code被墙了,所以迁移到了github上。

hustoj安装完默认只能判c和c++代码,接着输入:

sudo apt-get install openjdk-7-jdksudo 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/htmlsudo rm info.php

删除info.php,因为没用,而且还会有漏洞

接下里输入:

gedit

用open找到/var/www/html/index.html;

将里面的内容全部删除,并改为自己想显示的内容。原来的内容如下:




3 0
原创粉丝点击