前言
HustOJ 是一个开源的在线评测(OJ)系统,广泛用于教育和竞赛中。本文将详细介绍如何使用 HustOJ 搭建一个在线评测系统。
环境准备
首先,我们打开雨云,点击右上角的“登录/注册”。
为什么是雨云?
雨云有着简单易用、价格实惠等特点,很适合搭建小型乃至大型的网站。
按照要求注册一个账号,优惠码记得填pyao
。
注册好后,我们来到主面板,选择“云服务器”,再点击“购买云服务器”。
区域:中国香港-软银大带宽[四区]
CPU:Xeon® Gold
套餐:流量叠加型-KVM 标配版(2核2G)
这样的配置,足够小班内部评测。如果是大型OJ,就要更好的配置了。
购买好后,我们打开服务器的管理面板,等待服务器创建好后,找到“远程连接”这一栏。
此时我们按下Win
+R
,输入cmd
回车。
输入
ssh root@your_server_ip
输入密码(不会显示)回车,出现root@RainYun-XXXXXX:~#
就表示连接成功了!
然后输入
apt update
apt upgrade
reboot
reboot
后,连接会断开,过个3-5分钟重连就好了!
开始搭建
步骤一:安装依赖
1. 安装JDK
apt update
apt install openjdk-8-jdk
2. 安装MySQL
apt install mysql-server
mysql -u root -p
设置MySQL的root密码并创建数据库:
CREATE DATABASE hustoj;
CREATE USER 'hustoj'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON hustoj.* TO 'hustoj'@'localhost';
FLUSH PRIVILEGES;
3. 安装Tomcat
下载并解压Tomcat:
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz
tar -zxvf apache-tomcat-8.5.69.tar.gz
mv apache-tomcat-8.5.69 /opt/tomcat
启动Tomcat:
cd /opt/tomcat/bin
./startup.sh
步骤二:下载HustOJ
使用Git克隆HustOJ代码库:
git clone https://github.com/zhblue/hustoj.git
cd hustoj
步骤三:配置HustOJ
1. 数据库配置
在hustoj目录下,找到hustoj/oj/config.php文件,修改数据库连接信息:
$OJ_DB_HOST = "localhost";
$OJ_DB_NAME = "hustoj";
$OJ_DB_USER = "hustoj";
$OJ_DB_PASS = "your_password";
2. 编译器配置
在hustoj/oj/compile.php中配置编译器信息,确保系统能够正确调用编译器。
如g++11
,Pascal
,python3.11
等。
但首先,你需要确保你安装了相应的编译器。
3. 上传文件
将HustOJ的文件上传到Tomcat的webapps目录下:
cp -r hustoj /opt/tomcat/webapps/
步骤四:初始化数据库
进入MySQL,导入HustOJ的初始数据:
mysql -u hustoj -p hustoj < hustoj/sql/hustoj.sql
步骤五:启动服务
确保Tomcat正在运行,访问以下地址查看HustOJ是否正常启动:
http://your_server_ip:8080/hustoj
步骤六:配置Nginx(可选)
如果你希望通过80端口访问OJ网站,可以使用Nginx进行反向代理。
安装Nginx:
apt install nginx
配置Nginx,编辑/etc/nginx/sites-available/default
文件:
server {
listen 80;
server_name your_server_ip;
location / {
proxy_pass http://localhost:8080/hustoj;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启Nginx:
systemctl restart nginx
结语
至此,你已经成功搭建了一个HustOJ在线评测系统。你可以根据需要进一步配置和优化系统,加上自己的题目等。希望这篇博客能帮助到你,祝你在编程的道路上越走越远!
[点赞plz]