校园网搭建HUSTOJ记录

  • 来源:
  • 更新日期:2018-04-26

摘要:上学期和网管中心的老师说过很多次——要在校园网上搭OJ,当时那边老师说要等“虚拟化搞好了以后才能搭”。直到上周,终于在校园网上申请到了一个虚拟主机,4核,10G内存,100G硬盘,跑个OJ应该没问题。 刚开始准备给分个公网IP的,最后分了个内网的IP,T^T ssh刚登上,就准备换soures.list,换好163的源之后,apt-get update总是失败,很郁闷,又换回去

上学期和网管中心的老师说过很多次——要在校园网上搭OJ,当时那边老师说要等“虚拟化搞好了以后才能搭”。直到上周,终于在校园网上申请到了一个虚拟主机,4核,10G内存,100G硬盘,跑个OJ应该没问题。

y2vzmvxcck4.jpg

刚开始准备给分个公网IP的,最后分了个内网的IP,T^T

ssh刚登上,就准备换soures.list,换好163的源之后,apt-get update总是失败,很郁闷,又换回去,结果还是不行。

一ping才知道,外网全部ping不通。没辙,当时想到的就是把软件包全下载到自己机器,在一个一个用scp复制到server上,结果一个apache搞了一下午没装好,一层又一层的依赖,很头疼。临回去找到一种方法——局域网软件源。试了一下,本地apt-get install了一个git,server上果然能装上。当时很开心~

结果install apache2时,依赖的库没了,被我之前clean掉了,伤心。

第一天结束,回去把自己机子上ubuntu重装了一下。

内网软件源配置

 

主机部分

首先把主机给升级一下

#apt-getupdate(注意我这是直接超级用户下,因为平时只是做做测试,所以喜欢方便)

#apt-getupgrade

等待完成之后

在/var/cache/apt/archives里面保留了这些更新文件

 

安装dpkg-dev

#apt-getinstall dpkg-dev

 

安装apache2

#apt-getinstall apache2

 

新建4个目录

#mkdir/var/www/soft(存放安装文件)

#mkdir/var/www/dists

#mkdir/var/www/dists/lucid

#mkdir/var/www/dists/lucid/main

#mkdir/var/www/dists/lucid/main/binary-i386

 

把/var/cache/apt/archives/目录下的文件拷贝至/var/www/soft/目录下

#cp/var/cache/apt/archives/* /var/www/soft

 

进入/var/www/目录下开始打包

#cd/var/www/

#dpkg-scanpackagessoft/ /dev/null | gzip>/var/www/dists/lucid/main/binary-i386/Packages.gz

 

客户机

修改/etc/apt/source.list内容

删除原有内容

添加内容debhttp://192.168.6.16 lucid mian

6.16是我的主机IP

开始更新

#apt-getupdate

#apt-getupgrade

 

第二天。重装的ubuntu,之前装的软件全没了....

先装了svn,check代码:

svn checkout http://hustoj.googlecode.com/svn/tags/1.2rc/ hustoj1.2

check号代码,压缩,准备scp到server上:

 

tar -czvf hustoj1.2.tar.gz hustoj1.2 scp hustoj1.2.tar.gz xxx@xxx

 

server终端上:

 

tar -xzvf hustoj1.2.tar.gz

 

本机上先install一下HUSTOJ依赖的软件:

sudo apt-get install flex g++ libmysql++-dev php5 apache2 mysql-server php5-mysql php5-gd php5-cli mono-gmcs subversion

其实不install也行,apt-get download就可以了。只是为了让这些软件和它们依赖的软件被下载到/var/cache/apt/archives
接下来又用上面的方法,结果在server上不行,apt-get install老是失败,郁闷。

加了个-f选项突然可以了。apt-get install -f xxx

要改代码的地方:

install/judge.conf数据库帐号&密码,找php页面上的数据库帐号&密码:

cd web grep -n -R ""root"" *

找到文件和行数,server上修改之,再cp到/var/www下。

怀着激动的心情,打开我的浏览器,server IP打进去,“It works”

OJ目录加上,什么都没有!再打开一遍,还是神码都没有!

baidu,google搜“php 代码调试”(java web还略懂一点,php完全不会啊),server上要看error.log,狂搜:

 

tree -i -f / | grep error.log找到之后,打开,看到了“Call to undefined function mysql_pconnect() in /var/www/OJ/includ e/db_info.inc.php on line 36”,数据库驱动没有加

 

改php.ini:

 

tree -i -f / | grep php.ini取消注释行 extension=mysql.so

 

重启apache:

 

apache2ctl restart再次浏览,成功!