shi-yang / jnoj

Jiangnan Online Judge
https://www.jnoj.dev
Other
241 stars 62 forks source link

多评测机应该怎么弄? #67

Open tw-luo opened 4 years ago

shi-yang commented 4 years ago

假如有两台服务器(多台服务器也是一样),姑且称为 A,B。

都在这两台服务器上安装 jnoj(如果只是需要多测评机,不一定都要完整地安装 jnoj,只要把测评机git clone 下来能运行就可以了),都安装了,还可以结合 nginx 搞个负载均衡什么的。

这种情况下安装后显然它们的数据是不一样的。数据主要是

  1. 测评机测试点数据文件目录:jnoj/judge/data
  2. Polygon 给非管理员出题的:jnoj/polygon/data
  3. 以及 MySQL 数据库

1、2 的解决方法是一样的,你可以利用 rsync 来实现这两台服务器直接这两个目录的同步。(这个 rsync 我还没用过,只是知道这么一个工具,具体使用网上教程很多)

关于 3,有两种方法:

方法1. 默认情况下 MySQL 是禁止远程访问的,修改配置文件将服务器 A 的 MySQL 设为可远程访问,并创建一个可供远程访问的用户,然后将服务器 B 上 MySQL 的配置信息 jnoj/judge/config.inijnoj/polygon/config.inijnoj/config/db.php 改成服务器 A 的,如访问地址、用户名密码,这样一来两台服务器都读取到同一个数据库的信息。

方法2. 也可以利用 MySQL 主从同步机制,来实现服务器 A,B 数据库之间的同步。具体教程网上很多,在此不展开,遇到问题再来提问。