GoJudge环境部署本地调用云服务器部署go-judge判题机详细部署教程go-judge多语言支持

前言

  本文基于go-judge项目搭建,由于go-judge官网项目GitHub - criyle/go-judge: Sandbox Server in REST / gRPC API. Based on Linux container technologies.,资料太少,而且只给了C++语言的调用样例,无法知道其他常见语言比如:Python、Java等;同时go-judge也没有给出鉴权方式如何设置与调用,内部原理是啥? 因此本文结合自己搭建OJ系统的实践经验,耗时一周,总结了这篇文章,你可以按照文章步骤快速搭建一个基于go-judge完善的判题系统,支持C++、C语言、Java、Python3、Python2。

本文同时借鉴参考了HOJ、QDUOJ等其他开源OJ。

注意,文章中如若涉及楼主公网IP或者其他私有信息,请务必保密!

阅读本文你将了解:

(1)如何使用云服务器单独部署go-judge,不使用docker;

(2)使用docker如何部署go-judge服务;

(3)go-judge官方各项目介绍,中文文档补充;

(4)go-judge请求接口举例,以C++、C语言、Java、Python3、Python2为例,如需其他环境也可自行根据样例探索;

(5)go-judge启动参数如何设置,如何调整限制内存、CPU等参数;

(6)流程基于Linux宝塔面板搭建,你不需要对linux特别了解。

(7)常见问题处理:sudo apt-get update apt install执行慢的解决方法、GoJudge官网源码压缩包无法下载,Chrome浏览器等均提示有病毒,或者无法解压;Docker内安装语言包等问题处理;

(8)多机部署建议;

(9)教你如何基于Docker构建多语言支持的镜像,文章给了dockerfile文件,你可以基于他构建自己的镜像,本文支持C++、C语言、Java、Python3、Python2语言。HOJ的Dockerfile过于复杂,本文进行了精简。

全文目录

1 官网
2 部署流程
2.1 服务器部署
2.2 Docker部署(推荐)
2.3 构建全新镜像
2.4 隐患
2.5 构建镜像和容器命令
3 启动参数设置
3.1 所有参数
3.2 常用参数设置
4 请求接口
4.1 全部接口
4.2 Run接口举例
5 请求参数样例
5.1 C语言
5.2 C++
5.3 Java
5.4 Python3
5.5 Python2
6 常见问题解决
6.1 sudo apt-get update apt install执行慢的解决方法,更换镜像源
6.2 apt install g++报Unable to locate package
6.3 CentOS7系统需要开启User命名空间才能使用Docker部署沙箱
6.4 GoJudge官网源码压缩包无法下载,Chrome浏览器等均提示有病毒,或者无法解压
6.5 Git Clone时报错
6.6 Docker内安装语言包
7 附录
7.1 HOJ language.yml配置

1、官网

go-judge官网:https://github.com/criyle/go-judge

官方中文文档:https://github.com/criyle/go-judge/blob/master/README.cn.md

go-sandbox 官网 https://github.com/criyle/go-sandbox

go-judge是由REST / gRPC API实现的go-sandbox,底层是go-sandbox
部署go-judge有两种方式:
(1)直接服务器部署,用官网给的可执行文件;
(2)Docker部署,用官网给的命令,会基于官网镜像生成docker容器。
以上两种方式都不需要额外安装go环境,但判题环境比如c++,python等需要安装。

官网也给出了使用go-judge的例子:https://github.com/criyle/go-judger-demo
在该例子中,可基于Dockerfile.exec,构建自己的镜像,本文后续将给出如何构建一个自己的go-judge镜像,如何支持多编译环境等。

二、服务部署流程

(1)下载官网给的可执行二进制文件

自行根据自己的服务器版本选择,一般情况下是选这个:

由于go-judge资料欠缺,楼主耗时3天将部署流程整理成了手册(40页),如您需要可访问:go-judge判题机详细部署教程go-judge多语言支持_UUID资料库 获取,或者CSDN资源:https://download.csdn.net/download/liuning940307/89212973

 

相关推荐

  1. Stable Diffusion 本地部署详细教程

    2024-04-28 17:20:04       57 阅读
  2. docker部署go项目

    2024-04-28 17:20:04       30 阅读
  3. Go语言详细教程

    2024-04-28 17:20:04       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 17:20:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 17:20:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 17:20:04       87 阅读
  4. Python语言-面向对象

    2024-04-28 17:20:04       96 阅读

热门阅读

  1. 计算机网络复习(第一章概述)

    2024-04-28 17:20:04       27 阅读
  2. 2024.4.28每日一题

    2024-04-28 17:20:04       33 阅读
  3. 服务器不稳定会不会影响网站运行?

    2024-04-28 17:20:04       29 阅读
  4. 目标检测的迁移学习

    2024-04-28 17:20:04       27 阅读
  5. Web Service接口的HttpURLConnection调用

    2024-04-28 17:20:04       30 阅读
  6. C++指针的比较

    2024-04-28 17:20:04       194 阅读
  7. 小明的勇者之路:挑战极限,战胜未来!

    2024-04-28 17:20:04       99 阅读
  8. 关系型数据库管理系统!SQL Server !

    2024-04-28 17:20:04       117 阅读
  9. windows下docker创建mysql

    2024-04-28 17:20:04       32 阅读
  10. SQL中top的使用

    2024-04-28 17:20:04       36 阅读