HCRM博客

搭建GitHub支持的CentOS在线评测平台指南

在线评测系统(OJ)作为技术社区与教育机构的核心工具,其搭建与维护一直是开发者关注的重点,本文将详细介绍如何在CentOS系统上部署OJ平台,并将其代码托管至GitHub,帮助开发者高效构建稳定、可扩展的编程评测环境。

一、环境准备:CentOS基础配置

搭建GitHub支持的CentOS在线评测平台指南-图1

1、系统更新与依赖安装

以root权限登录服务器,执行以下命令:

   yum update -y
   yum install -y git gcc-c++ make openssl-devel

更新系统并安装编译工具链,为后续部署依赖项提供基础支持。

2、安装Node.js与PM2进程管理

推荐使用Node.js 16.x以上版本:

   curl -sL https://rpm.nodesource.com/setup_16.x | bash -
   yum install -y nodejs
   npm install pm2 -g

PM2可保障OJ服务在后台稳定运行,避免进程意外中断。

搭建GitHub支持的CentOS在线评测平台指南-图2

**二、部署OJ核心服务

1、选择开源OJ框架

HUSTOJ或QDUOJ均为成熟的开源方案,以QDUOJ为例,克隆仓库至本地:

   git clone https://github.com/QingdaoU/OnlineJudgeDeploy.git
   cd OnlineJudgeDeploy

2、配置数据库与后端服务

- 安装MySQL/MariaDB并创建数据库:

     yum install -y mariadb-server
     systemctl start mariadb
     mysql_secure_installation
     mysql -u root -p -e "CREATE DATABASE oj DEFAULT CHARSET utf8mb4"

- 修改项目配置文件config.yaml,填写数据库连接信息及管理员账号。

3、编译与启动服务

搭建GitHub支持的CentOS在线评测平台指南-图3
   npm install
   pm2 start server.js --name "OJ_Server"
   pm2 save

通过pm2 logs命令可实时监控服务状态,排查启动错误。

三、Nginx反向代理与HTTPS加密

1、安装Nginx并配置站点

   yum install -y nginx
   systemctl enable nginx

/etc/nginx/conf.d/oj.conf中添加以下内容:

   server {
       listen 80;
       server_name oj.yourdomain.com;
       location / {
           proxy_pass http://localhost:3000;
           proxy_set_header Host $host;
       }
   }

执行nginx -s reload生效配置。

2、申请SSL证书(可选但推荐)

使用Certbot自动获取Let's Encrypt证书:

   yum install -y certbot python3-certbot-nginx
   certbot --nginx -d oj.yourdomain.com

HTTPS可提升用户信任度,同时符合搜索引擎对安全性的要求。

四、代码托管至GitHub:版本控制与协作

1、初始化本地Git仓库

在OJ项目根目录执行:

   git init
   git add .
   git commit -m "Initial commit: OJ deployment"

2、关联远程GitHub仓库

- 在GitHub创建私有仓库(如OnlineJudge-Deploy),复制仓库URL。

- 本地执行:

     git remote add origin https://github.com/yourusername/OnlineJudge-Deploy.git
     git push -u origin master

注意:敏感信息(如数据库密码)需通过.gitignore过滤,或使用环境变量管理。

3、持续集成与自动化部署(进阶)

结合GitHub Actions,可配置自动测试与服务器同步脚本,减少手动运维成本。

**五、安全加固与性能优化

防火墙配置

仅开放必要端口(80/443/22):

  firewall-cmd --permanent --add-service=http
  firewall-cmd --permanent --add-service=https
  firewall-cmd --permanent --add-service=ssh
  firewall-cmd --reload

定期备份与监控

使用crontab定时备份数据库与代码:

  0 3 * * * mysqldump -u root -pPASSWORD oj > /backup/oj_db_$(date +\%F).sql

推荐集成Prometheus+Grafana监控服务器资源占用。

个人观点

OJ系统的成功部署仅是起点,后续需持续关注社区反馈,迭代功能,引入Docker容器化技术可提升判题沙盒的安全性;集成CI/CD流水线能加速功能更新,技术部署的本质是服务用户需求,稳定与易用性永远优先于华而不实的功能堆砌。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/30394.html

分享:
扫描分享到社交APP
上一篇
下一篇