Giter Site home page Giter Site logo

onlinejudgedeploy's Introduction

简体中文 | English

环境准备

Linux 环境

  1. 安装必要的依赖

    sudo apt-get update && sudo apt-get install -y vim python3-pip curl git
    pip3 install --upgrade pip
    pip install docker-compose
  2. 安装 Docker

    国内用户使用脚本一键安装: sudo curl -sSL https://get.daocloud.io/docker | sh
    国外用户使用脚本一键安装: sudo curl -sSL get.docker.com | sh

    详细步骤参照: https://docs.docker.com/install/

Windows 环境

Windows 下的安装仅供体验,勿在生产环境使用。如有必要,请使用虚拟机安装 Linux 并将 OJ 安装在其中。

以下教程仅适用于 Win10 x64 下的 PowerShell

  1. 安装 Windows 的 Docker 工具
  2. 右击右下角 Docker 图标,选择 Settings 进行设置
  3. 选择 Shared Drives 菜单,之后勾选你想安装 OJ 的盘符位置(例如勾选D盘),点击 Apply
  4. 输入 Windows 的账号密码进行文件共享
  5. 安装 Pythonpipgitdocker-compose,安装方法自行搜索。

开始安装

  1. 请选择磁盘空间富余的位置,运行下面的命令

    git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy
  2. 启动服务

    docker-compose up -d

根据网速情况,大约5到30分钟就可以自动搭建完成,全程无需人工干预。

等命令执行完成,然后运行 docker ps -a,当看到所有的容器的状态没有 unhealthyExited (x) xxx 就代表 OJ 已经启动成功。

尽情享用吧

通过浏览器访问服务器的 HTTP 80 端口或者 HTTPS 443 端口,就可以开始使用了。后台管理路径为/admin, 安装过程中自动添加的超级管理员用户名为 root,密码为 rootroot请务必及时修改密码

不要忘记阅读文档 http://opensource.qduoj.com/

定制

2.0 版将一些常用设置放到了后台管理中,您可以直接登录管理后台对系统进行配置,而无需进行代码改动。

若需要对系统进行修改或二次开发,请参照各模块的README,修改完成后需自行构建Docker镜像并修改docker-compose.yml

遇到了问题?

请参照: http://opensource.qduoj.com/ ,如有其他问题请入群讨论或提issue。

onlinejudgedeploy's People

Contributors

jingyenloh avatar mikucat0309 avatar renbaoshuo avatar smith-cruise avatar virusdefender avatar zema1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

onlinejudgedeploy's Issues

docker-compose.yml error

ERROR: Version in "./docker-compose.yml" is invalid. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the services key, or omit the version key and place your service definitions at the r
oot of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

系統:mx-linux

关于准备安装文件的问题

“然后编辑 docker-compose.yml 将43行的TOKEN和第58行的JUDGE_SERVER_TOKEN修改为自定义的值, 两处值必须相同且 = 前后不能有空格”,对doker不是很了解,求问43行的TOKEN和58行的JUDGE_SERVER_TOKEN的值代表什么意思

ntfs

if docker-compose.yml is in ntfs file system, postgres will not run successfully:
initdb: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted

无法登陆

我在服务器上构建的,构建没有出问题,不过我是把80端口改成了1234端口。

访问也是好的,但是一登录就提示server error

如图:
image

网址为http://oj.wgnfls.xyz:1234

这是log文件:

judge_server.log:
https://raw.githubusercontent.com/jerrywcy/webdisk/master/judge_server.log

gunicorn.log:

[2020-03-09 04:46:39 +0000] [6] [INFO] Starting gunicorn 19.9.0
[2020-03-09 04:46:39 +0000] [6] [INFO] Listening at: http://0.0.0.0:8080 (6)
[2020-03-09 04:46:39 +0000] [6] [INFO] Using worker: threads
[2020-03-09 04:46:39 +0000] [16] [INFO] Booting worker with pid: 16
[2020-03-09 04:46:39 +0000] [18] [INFO] Booting worker with pid: 18

证书问题

因证书问题导致oj-backend异常退出,logs: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)> (url: https://sentry.io/api/263057/store/),是因为使用py3.6要ssl认证导致的吗?mac ox可以通过使用亚马逊的证书解决此问题吗?

关于启动服务

在输入docker-compose up -d后出现的是:bash: /usr/local/bin/docker-compose: Permission denied,请问是为什么?

关于环境部署:组件关联问题

请问系统可以只搭建题目存储的部分吗,我只想用来存一下自己的刷过的题和对应的题解,不需要判题服务器。如果可以的话,我只部署哪些容器呢?

如何导入题目啊

作为小白,实在是不知道如何导入题目,求教,比如在群里给出的蓝桥杯的压缩包,要如何导入呢

cdn用不了

买了七牛云cdn,然后修改yml文件,oj就进不去了,web服务器用了nginx

在执行最后一步运行docker-compose时编码错误

以下是错误报告
Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 11, in
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 68, in main
command()
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 115, in perform_command
project = project_from_options('.', options)
File "/usr/local/lib/python2.7/dist-packages/compose/cli/command.py", line 37, in project_from_options
override_dir=options.get('--project-directory'),
File "/usr/local/lib/python2.7/dist-packages/compose/cli/command.py", line 91, in get_project
config_data = config.load(config_details)
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 383, in load
service_dicts = load_services(config_details, main_file)
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 481, in load_services
return build_services(service_config)
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 460, in build_services
for name, service_dict in service_config.items()
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 445, in build_service
service_dict = process_service(resolver.run())
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 712, in process_service
service_dict['volumes'] = resolve_volume_paths(working_dir, service_dict)
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 1080, in resolve_volume_paths
for volume in service_dict['volumes']
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 1094, in resolve_volume_path
container_path, host_path = split_path_mapping(volume)
File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 1180, in split_path_mapping
if ':' in volume_config:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 11: ordinal not in range(128)

无法添加中文题目?

是我的原因还是本身就是这样设计的?
发布带有中文的题目的时候,任何有中文的文本框出现的时候就会出现这样的提示:
input_description : This field may not be blank.

Java submission waiting for infinite time

Other languages are ok, but java doens't finish the submission.
just waiting all the time. it doesn't produce ERROR.

I read 'common problems' of the documentation page, but
I couldn't solve this problem.

EXPLANNG THE SITUATION:

If I submit normal java source code (with no error), it waits for infinite time

image

but If there's a compilation error, it shows CE.

image

question

有没有完整的docker和docker-compose的镜像文件。按照上面的安装环境的步骤是没有办法继续下去的。如果你们愿意将完整的镜像文件分享,请加我的qq:2842800445;发送给我。谢谢

镜像下载不下来

尝试多次都无法下载镜像,是我的网络问题还是怎么回事?看了之前的一个已经closed的issue这个的链接,404了。请解答一下,谢谢~

host two oj in one machine

I want to host two OJ in one machine. One for public and one for testing. I try this:

version: "3"                                                                                                                                           
services:                                                                                                                                              
                                                                                                                                                       
  toj-redis:                                                                                                                                           
    image: redis:4.0-alpine                                                                                                                            
    container_name: toj-redis                                                                                                                          
    restart: always                                                                                                                                    
    volumes:                                                                                                                                           
      - ./data/redis:/data                                                                                                                             
    ports:                                                                                                                                             
      - "0.0.0.0:6379:6389"                                                                                                                            
                                                                                                                                                       
  toj-postgres:                                                                                                                                        
    image: postgres:10-alpine                                                                                                                          
    container_name: toj-postgres                                                                                                                       
    restart: always                                                                                                                                    
    volumes:                                                                                                                                           
      - ./data/postgres:/var/lib/postgresql/data                                                                                                       
    environment:                                                                                                                                       
      - POSTGRES_DB=onlinejudge                                                                                                                        
      - POSTGRES_USER=onlinejudge                                                                                                                      
      - POSTGRES_PASSWORD=onlinejudge                                                                                                                  
    ports:                                                                                                                                             
      - "0.0.0.0:5432:5442"                                                                                                                            
                                                                                                                                                       
  toj-judge-server:                                                                                                                                    
    image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_server                                                                                  
    container_name: toj-judge-server                                                                                                                   
    restart: always                                                                                                                                    
    read_only: true
    cap_drop:
      - SETPCAP
      - MKNOD
      - NET_BIND_SERVICE
      - SYS_CHROOT
      - SETFCAP
      - FSETID
    tmpfs:
      - /tmp/toj
    volumes:
      - ./data/backend/test_case:/test_case:ro
      - ./data/judge_server/log:/log
      - ./data/judge_server/run:/judger
    environment:
      - SERVICE_URL=http://judge-server:8090
      - BACKEND_URL=http://toj-backend:8010/api/judge_server_heartbeat/
      - TOKEN=CHANGE_THIS
      # - judger_debug=1
    ports:
      - "0.0.0.0:8080:8090"

  toj-backend:
    image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_backend
    container_name: toj-backend
    restart: always
    depends_on:
      - toj-redis
      - toj-postgres
      - toj-judge-server
    volumes:
      - ./data/backend:/data
    environment:
      - POSTGRES_DB=onlinejudge
      - POSTGRES_USER=onlinejudge
      - POSTGRES_PASSWORD=onlinejudge
      - JUDGE_SERVER_TOKEN=CHANGE_THIS
      # - FORCE_HTTPS=1
      # - STATIC_CDN_HOST
    ports:
      - "0.0.0.0:8000:8010"
      - "0.0.0.0:1443:1453"

But I got error:

WARNING: Found orphan containers (oj-backend, judge-server, oj-postgres, oj-redis) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Recreating toj-redis ...
Recreating toj-judge-server ...
Recreating toj-redis
Recreating toj-postgres ...
Recreating toj-judge-server
Recreating toj-postgres ... done
Recreating toj-backend ...
Recreating toj-backend ... error

ERROR: for toj-backend  Cannot start service toj-backend: driver failed programming external connectivity on endpoint toj-backend (2eb41d38fa28dbd8adde8ba7605673c517e3027a9dbd2542bc658c588fe15031): Bind for 0.0.0.0:8000 failed: port is already allocated

ERROR: for toj-backend  Cannot start service toj-backend: driver failed programming external connectivity on endpoint toj-backend (2eb41d38fa28dbd8adde8ba7605673c517e3027a9dbd2542bc658c588fe15031): Bind for 0.0.0.0:8000 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

by the way, toj mean testing oj

搭建在子页面上

如题,服务器上已经搭着一个网页安装时oj-backend报错端口被占用,想请教一下如何将oj搭在类似与localhost/oj的子页面上

there is a 404 error on aliyun

root@debian:~/OnlineJudgeDeploy#docker-compose up -d
Pulling judge-server (registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_server:latest)...
ERROR: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

似乎在阿里云上的镜像不见了,请问是否可以更新一下镜像?

邮箱无法设置

OJ好像不支持SSL,只支持TLS,找不到能用的邮箱以及怎样设置?

Testcase is empty

Whenever I go to localhost/admin and create a new problem I always get an error that says "No test case provided" or "Testcase is empty" even though I have uploaded the correct testcase.zip file.

各种问题。

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

如何开启并使用 SSO

我在 OJ 的 commit 中发现了有 SSO 的存在,请问如果要使用 SSO 我要如何部署呢?

使用Java提交问题总是Runtime Error

添加了一个A+B的测试问题。使用C提交是AC,用Java提交总是Runtime Error。
试了几台机器部署都是这样,是不是内存过小的原因,如何查看日志呢?

judge-server is unhealthy

I can't find reason why my judge server is unhealthy
If I try to connect to the localhost It gives me an error message.
1
fds

SELinux环境下无法成功部署

fedora 27 server, 自带selinux, 容器 judge-server oj-postgres oj-redis 无限重启, 显示各种Permission denied . 目前需要关闭selinux才能正常使用

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.