开源的OJ:https://github.com/zhblue/hustoj
适合和我一样从零开始的萌新搭建
建议ubuntu直接脚本一键部署
若是和我一直实验室服务器只是Centos7的话可以看看我的搭建过程
脚本安装失败,只能转为人工搭建了
但是最好还是先执行一下install-centos7
也方便之后的搭建
首先搭建的是LNMP(linux,nginx,mysql,PHP)环境,最好还是自己搭建,一开始利用宝塔的一键部署发现搭不了,后来还要花时间去卸载。
具体过程网上很多,基本可以直接yum install xxx
脚本运行完后应该会在/home里有一个judged用户
首先先把/home/judge/src下的web文件夹移到nginx的/usr/local/nginx/html目录下
然后就是配置nginx环境了
打开/usr/local/nginx/conf 里的 nginx.conf文件
找到里面的server
listen口是选择从哪个端口进入
一般默认是:80
这样可以直接用网址登录
若是改了x
登录URL就需要改成网址:x
如果之前有搞过apache的话可以先
lsof -i :x
看一下端口有无占用
没什么用的直接kill -i x杀掉进程
有用就换一个端口
server {
listen 80;
server_name localhost;
autoindex on;
#charset koi8-r;
#access_log logs/host.access.log main;
}
root就是在nginx文件中的地址
这里我把hustoj的web放在了 …nginx/html/web里面
location / {
root html/web;
index index.html index.htm index.php;
}
php-fpm的配置文件,当nginx识别到php文件时需要传给php-fpm让其处理
location ~ \.php$ {
root html/web;
fastcgi_pass 127.0.0.1:9000; #fastcgi服务端口,将http请求代理到此端口
fastcgi_index index.php; #fastcgi服务默认页面
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #设置请求的脚本文件路径
include fastcgi_params;
}
加起来就是
server {
listen 80;
server_name localhost;
autoindex on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html/web;
index index.html index.htm index.php;
}
location ~ \.php$ {
root html/web;
fastcgi_pass 127.0.0.1:9000; #fastcgi服务端口,将http请求代理到此端口
fastcgi_index index.php; #fastcgi服务默认页面
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #设置请求的脚本文件路径
include fastcgi_params;
}
然后web的配置见文件也要看情况修改
打开/usr/local/nginx/html/web/include 下的 db_info.inc.php文件
static $DB_HOST="localhost"; //数据库服务器ip或域名
static $DB_NAME="jol"; //数据库名
static $DB_USER="root"; //数据库账户
static $DB_PASS="123456"; //数据库密码
这里就需要你提前配置数据库了
mysql -u root -p
输入密码
这里我的密码是123456
也可以mysql -u root -p123456 (密码必须紧跟-p)
直接进入
然后 SHOW DATABASES; (注意有分号)
脚本运行成功的话会有jol这个数据库的
如果没有就自己建一个呗
CREATE DATABASE jol;
最后记得刷新一下nginx,php和mysql
systemctl restart nginx.service
systemctl restart php.service
systemctl restart mysqld.service
到这里如果一切成功的话登录服务器主机号应该是可以成功显示出页面的,如果不行可以底下留言一起讨论
反正我是又改改弄弄才成功,这里如果没成功可以打开db_info.inc.php文件里面第二行
//ini_set(“display_errors”, “Off”); //set this to “On” for debugging ,especially when no reason blank shows up.
其实可以根据英文猜出就是用来显示错误信息的
作用可以等同于把 /etc下的php.ini中的display_errors=Off改成 On
想简单一点就直接将注释取消,把Off改成On就可以看错误信息,warning的都无所谓主要看那个重大错误就行
我遇到问题的其实就是删除一个函数就行,直接百度一下报错信息基本都可以解决
然后就是judged了
首先肯定是judged的配置文件
打开/home/judge/etc 中 judge.conf 文件
将数据库什么的改成跟 db_info.inc.php 中的一样
OJ_HOST_NAME=127.0.0.1
OJ_USER_NAME=root
OJ_PASSWORD=123456
OJ_DB_NAME=jol
OJ_PORT_NUMBER=3306
然后将OJ_RUNNING改成4
#CPU cores Config
OJ_RUNNING=4
最后也要杀死进程再重启
kill -9 judged
sudo judged
这样hustoj应该就可以运行了
最后别忘了更新一下系统
sudo bash /home/judge/src/install/update-hustoj
最后也是分享一下我这几天常用的命令把
cd xxx跳转
ls 显示你可以cd的目录
kill 杀死进程
lsof -i :x 查看端口x的使用情况
rm x 删除文件
cp和mv差不多,一个直接移动,一个复制过去
常用的就这么多,希望我的教程能帮助更多和我一样的萌新