You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

4.4 KiB

1 平台部署

1.1 部署流程:

1.把原来的服务器/data数据scp到新服务器的/data

在数据存放的机器上切换到相应目录并执行 scp ./data 用户名(新)@ip(新):/

2.把docker-compose.yml文件复制到新服务器

3.切换到yml文件所在目录,执行sudo docker-compose up -d

1.2 docker-compose.yml

version: "3"
services:
  oj-redis:
    image: redis:4.0-alpine
    container_name: oj-redis
    restart: always
    volumes:
      - /data/data/redis:/data
  oj-postgres:
    image: postgres:10-alpine
    container_name: oj-postgres
    restart: always
    command: postgres -c max_connections=1000
    ports:
      - "127.0.0.1:12348:5432"
    volumes:
      - /data/data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=onlinejudge
      - POSTGRES_USER=onlinejudge
      - POSTGRES_PASSWORD=onlinejudge
  judge-server:
    image: registry.cn-hangzhou.aliyuncs.com/wsl/judge_server
    container_name: judge-server
    restart: always
    read_only: true
    cap_drop:
      - SETPCAP
      - MKNOD
      - NET_BIND_SERVICE
      - SYS_CHROOT
      - SETFCAP
      - FSETID
    tmpfs:
      - /tmp
    volumes:
      - /data/backend/test_case:/test_case:ro
      - /data/judge_server/log:/log
      - /data/judge_server/run:/judger
    environment:
      - SERVICE_URL=http://judge-server:8080
      - BACKEND_URL=http://oj-backend:8000/api/judge_server_heartbeat/
      - TOKEN=DASETALENT
  oj-backend:
    image: registry.cn-hangzhou.aliyuncs.com/wsl/oj_backend
    container_name: oj-backend
    restart: always
    depends_on:
      - oj-redis
      - oj-postgres
      - judge-server
    volumes:
      - /data/data/backend:/data
      - /data/data/app:/app
    environment:
      - POSTGRES_DB=onlinejudge
      - POSTGRES_USER=onlinejudge
      - POSTGRES_PASSWORD=onlinejudge
      - JUDGE_SERVER_TOKEN=DASETALENT
      # - FORCE_HTTPS=1
      # - STATIC_CDN_HOST=cdn.oj.com
    ports:
      - "0.0.0.0:80:8000"
      - "0.0.0.0:443:1443"

2 题目创建要求

2.1 题面

题目表述准确无歧义

明确给出输入数据范围

2.2 测试用例

题面中给出的sample不应出现在测试用例中

样例中,小样例比例不高于20%,中等规模样例40%~60%,剩下为接近数据最大范围的样例

2.3 标程

出题应准备能够保证正确性的标准程序代码

3 验题要求

3.1 不同语言

需要检查相同算法,不同的语言的结果是否相同。

避免出现如c语言可以通过,python实现的相同算法代码超时现象

3.2 验题机制

至少两人验题

​ 出题人提交标程测试,验证测试用例的正确性

​ 非出题人按照做题的流程,阅读题面,检查是否有歧义、表述不清等问题;编写代码进行提交测试。

实现标程的其它语言版本,测试是否出现3.1中的问题,视情况可通过修改题目时间限制。

4 机试具体流程

机试前准备阶段

​ 1.机试oj主平台上创建比赛,设置密码,关闭real time rank,设置不可见。创建一个新服务器

​ 2.创建题目,满足2题目创建要求

​ 3.验题,满足3验题要求,验题时需要打开可见,先确保设置了密码,验完及时恢复不可见状态

​ 4.将主平台备份至新服务器,运行服务,并验证可用性。参考1平台部署部分。

考场快开始阶段

​ 5.确认 密码已设置,real time rank为关闭,并且处于不可见状态

马上开始阶段

​ 6.设置比赛为可见,让考生能够进入比赛输入密码页面

​ 7.公布比赛密码

考试中

​ 8.观测平台可用性,若出现服务异常,优先进入服务器,执行sudo docker-compose restart热重启,没恢复则进行操作9;若恢复则继续考试,不需要操作9

​ 9.让考生进入备用服务器考试

考试结束(立刻要做的)

​ 10.修改比赛密码,同时设置为不可见。

成绩统计

​ 11.参考机试结束后续流程.pdf

​ 其中连接数据库部分做出如下变化:

使用SSH通道:

image-20230328110921250

连接数据库:

image-20230328111052680

数据库、用户名、密码皆为onlinejudge

机试结束,手动去做一个永久快照。