# \[云服务器6\] 使用HustOJ搭建一个在线OJ系统

**URL:** <https://forum.rainyun.com/t/topic/9297>\
**Category:** 云服务器 RCS\
**Created:** [2024 年9 月 6 日 09:27 UTC](https://forum.rainyun.com/t/topic/9297 "2024-09-06T09:27:11Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![PatrickYao](https://forum.rainyun.com/letter_avatar_proxy/v4/letter/p/7feea3/32.png) [@PatrickYao](https://forum.rainyun.com/u/PatrickYao)\
发布日期： [2024 年9 月 6 日 09:27 UTC](https://forum.rainyun.com/t/topic/9297/1 "2024-09-06T09:27:11Z")

</div>

# 前言

HustOJ 是一个开源的在线评测（OJ）系统，广泛用于教育和竞赛中。本文将详细介绍如何使用 HustOJ 搭建一个在线评测系统。

# 环境准备

首先，我们打开[雨云](https://www.rainyun.com)，点击右上角的“登录/注册”。

> 为什么是雨云？  
> 雨云有着 **简单易用** 、 **价格实惠** 等特点，很适合搭建小型乃至大型的网站。

按照要求注册一个账号，优惠码记得填`pyao`。

注册好后，我们来到主面板，选择“云服务器”，再点击“购买云服务器”。

 ![Screenshot_20240906_173744](https://forum.rainyun.com/uploads/default/original/2X/1/155d003773e5fb8e4710722e360a02f1700d8054.jpeg)

**区域** ：中国香港-软银大带宽[四区]

**CPU** ：Xeon® Gold

**套餐** ：流量叠加型-KVM 标配版（2核2G）

 ![Screenshot_20240906_173757](https://forum.rainyun.com/uploads/default/original/2X/5/59a84f996757f200a2a1ba011f9a2bac48c426aa.jpeg)  
 ![Screenshot_20240906_173823](https://forum.rainyun.com/uploads/default/original/2X/4/47b3a59997e8b2c340f659b641f2347142041f1c.jpeg)

这样的配置，足够小班内部评测。如果是大型OJ，就要更好的配置了。

购买好后，我们打开服务器的管理面板，等待服务器创建好后，找到“远程连接”这一栏。

 ![Screenshot_20240906_173852](https://forum.rainyun.com/uploads/default/original/2X/6/6d96167d905851b8082621e0b1f241f228c2c31b.jpeg)  
 ![Screenshot_20240906_173906](https://forum.rainyun.com/uploads/default/original/2X/f/fb1c011d4e4a3221d93044f866e9dd823fc91070.jpeg)

此时我们按下`Win`+`R`，输入`cmd`回车。

输入

```bash
ssh root@your_server_ip

```

输入密码（不会显示）回车，出现`root@RainYun-XXXXXX:~#`就表示连接成功了！

然后输入

```bash
apt update
apt upgrade
reboot

```

`reboot`后，连接会断开，过个3-5分钟重连就好了！

# 开始搭建

## 步骤一：安装依赖

### 1. 安装JDK

```bash
apt update
apt install openjdk-8-jdk

```

### 2. 安装MySQL

```bash
apt install mysql-server
mysql -u root -p

```

设置MySQL的root密码并创建数据库：

```sql
CREATE DATABASE hustoj;
CREATE USER 'hustoj'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON hustoj.* TO 'hustoj'@'localhost';
FLUSH PRIVILEGES;

```

### 3. 安装Tomcat

下载并解压Tomcat：

```bash
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：

```bash
cd /opt/tomcat/bin
./startup.sh

```

## 步骤二：下载HustOJ

使用Git克隆HustOJ代码库：

```bash
git clone https://github.com/zhblue/hustoj.git
cd hustoj

```

## 步骤三：配置HustOJ

### 1. 数据库配置

在hustoj目录下，找到hustoj/oj/config.php文件，修改数据库连接信息：

```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目录下：

```bash
cp -r hustoj /opt/tomcat/webapps/

```

## 步骤四：初始化数据库

进入MySQL，导入HustOJ的初始数据：

```bash
mysql -u hustoj -p hustoj < hustoj/sql/hustoj.sql

```

## 步骤五：启动服务

确保Tomcat正在运行，访问以下地址查看HustOJ是否正常启动：

```bash
http://your_server_ip:8080/hustoj

```

## 步骤六：配置Nginx（可选）

如果你希望通过80端口访问OJ网站，可以使用Nginx进行反向代理。

安装Nginx：

```bash
apt install nginx

```

配置Nginx，编辑`/etc/nginx/sites-available/default`文件：

```auto
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：

```bash
systemctl restart nginx

```

# 结语

至此，你已经成功搭建了一个HustOJ在线评测系统。你可以根据需要进一步配置和优化系统，加上自己的题目等。希望这篇博客能帮助到你，祝你在编程的道路上越走越远！

~~[点赞plz]~~
