2012年11月4日星期日

SCUTOJ 建站手记

鉴于某学院的说法:你们不做出点样子(UI)来,我怎么好给你服务器呢??。。。 = =
好吧,既然这么蛋疼就先在VPS上面搞好了。。。(一上来就吐槽学院好像不太好的样子??

主机的话,原来想选Linode的,心想咱们也好不容易可以做一回壕啊。最后考虑到毕竟是测试阶段,服务器没必要选的那么好,所以退而求其次,选了xehost(在V2EX看到的,刚好碰上搞活动的说)。XEN主机,美国机房,ChinaCache线路,电信ping值在150-200ms之间,勉强还可以接受。价格的话略贵吧,月付80大洋。

硬件配置:
Xeon E5606 @2.13GHz 双核
512M RAM
20G 空间
500G 流量
100Mbps 带宽 (实测有接近2M/s的速度
磁盘I/O 测试了一下,40M/s, 勉强吧
系统 Ubuntu 10.04

======================================

hustoj代码托管在google code,要用SVN checkout(其实我还是更喜欢github)

svn checkout http://hustoj.googlecode.com/svn/trunk/ hustoj-read-only

进入到hustoj-read-only/install 目录中,修改一下安装脚本,把yum系的去掉,注意下数据库的用户和密码就可以运行了。其实最好就是手动安装一次,这样对整个架构就有个大体的把握了。

还有web服务器关于php脚本的设置:
       sudo vim /etc/php5/apache2/php.ini 
       open_basedir =/home/judge/data:/var/www/JudgeOnline:/tmp  
       max_execution_time = 300     ; Maximum execution time of each script, in seconds
       max_input_time = 600 
       memory_limit = 256M      ; Maximum amount of memory a script may consume (16MB)
       post_max_size = 64M
       upload_tmp_dir =/tmp
       upload_max_filesize = 64M
设置完以后重启apache。

在浏览器输入IP/目录,应该可以看到页面了。如果出现网页一片空白的情况,说明php脚本有语法错误或者web文件目录权限设置不对。这时候可以打开php.ini的display_error 选项,可以方便排除错误。debug完之后建议还是关上。默认,php报错是不记录进日志文件,这很不便于排查问题。打开php的错误日志记录也很简单。编辑php.ini
log_errors = On
error_log = /usr/local/php/log/error.log

========================================

接下来就是折腾DNS了。
偶在dot.tk上面注册了scutoj.tk的域名,其实也只是实验阶段,免费东西不知道靠谱不,到时有条件还是转.me好了(其实很想注册个像中大的那种短域名啊soj.me )。其实原来想用DNS Pod的服务(据说对google DNS和open DNS有优化,不过按照最近斯巴达的网络状况,8.8.8.8都全挂了 = =),但是懒了一下,暂时没弄。

后台添加一个A record,指向VPS的IP地址,主机名就写www。但是这样的话只是指向/var/www目录,而OJ是放在其子目录下。以前没试过子目录绑定域名,又是google上一阵狂搜,折腾啊~

最后发现是需要设置apache。这里又涉及到各种linux distribution的apahce配置文件位置不同名字不同 = =!,最后还是在ubuntu wiki上面找到官方说明,是设置apahce virtualhost。具体可以看这个链接。还有就是NameVirtualHost *:80 ,这里在 /etc/apache2/port.conf 里面已经设置过了,再在default里面设的话可能会报warn。只需要注释掉其中一个即可。

我记得以前在SJTU-NIC的时候有看过下apache的配置文件,过了几个月竟然忘得七七八八了。。。哎,这记忆力,跪了。




没有评论:

发表评论