HCRM博客

如何在CentOS系统上搭建基于GitHub的在线评测平台?

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

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

如何在CentOS系统上搭建基于GitHub的在线评测平台?-图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服务在后台稳定运行,避免进程意外中断。

如何在CentOS系统上搭建基于GitHub的在线评测平台?-图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、编译与启动服务

如何在CentOS系统上搭建基于GitHub的在线评测平台?-图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
上一篇
下一篇