1.后端环境搭建

建议零基础的同学不要往下看本地调试过程了,太耗费时间了。

有后台开发基础的可以参考这篇文章。

工具和环境:windows10、IDEA(2021.2)、mysql、maven(3.6.3)、java1.8、nacos(1.4.2)

关于IDEA配置Java环境的操作以及如何下载安装数据库操作这里不讲,这些基础操作也不会的话就不用往下看了。

关于IDEA搭建maven环境的相关文章可以看这篇:

IDEA搭建maven环境 – 每天进步一点点 (longkui.site)

关于windowns搭建nacos的文章可以参考下面的几篇:

nacos在windows下的下载与安装 – 每天进步一点点 (longkui.site)

下载后台代码后,用IDEA打开,maven自动拉取相关包。

1.1mysql数据库相关配置

我们创建一个数据库,名字就叫hoj,打开 /hoj/sqlAndsetting/hoj.sql,然后再执行hoj-upsdate.sql。

执行完毕后,我们来到 hoj/hoj-springboot/DataBackup/src/main/resources/application-dev.yml

目录下,修改mysql的数据库连接配置:

把它改成我们刚才创建的数据库地址,用户名和密码同步修改成我们的数据库用户名和密码。

1.2 redis配置

hoj要使用redis,redis默认密码是hoj123456,我们启动redis并且设置密码为hoj123456。

对redis不太熟悉的人不需要在这个地方额外花时间研究,直接下载一个 小皮面板,一键下载启动就可以了。





1.3nacos配置

nacos使用的是1.4.2版本,下载链接:Release 1.4.2 (Apr 29th, 2021) · alibaba/nacos · GitHub

windows建议下载zip格式的。

相关的操作流程可以参考前面的一篇文章:nacos在windows下的下载与安装 – 每天进步一点点 (longkui.site)

解压zip后,我们首先要执行hoj提供的mysql文件,文件位置:

\HOJ\hoj\sqlAndsetting\nacos.sql

在mysql下执行这个sql,就会自动创建nacos的数据库和配置文件。

这个时候还不能启动nacos,因为还没有做数据库持久化配置。我们打开nacos的配置文件

\nacos\nacos-server-1.4.2\nacos\conf\application.properties

我们把里面的配置的用户米和密码都改成hoj给的。

nacos的数据库配置文件在bootstrap.yml中,默认如下:

用户名:root

密码:hoj123456

这个时候在nacos的bin目录下,按住shift+鼠标右键,打开PowerShell后输入cmd,打开cmd窗口,然后输入指令

startup.cmd -m standalone

就可以看到nacos正常启动。然后浏览器输入 http://127.0.0.1:8848

用户名和密码默认都是nacos。登陆后就可以看到读取的hoj的配置

然后执行下面的sql,为nacos增加用户和角色

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
 
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

nacos添加一个用户,因为hoj里面给nacos配置了用户,我们需要在nacos中添加一个用户。

INSERT INTO `nacos`.`users`(`username`, `password`, `enabled`) VALUES ('root', '$2a$10$7jSFKa/rVz8esPnN1bc3C.Krzw/ftHZmHEx0jFxX5nVoiFU63Eykq', 1);

这个nacos用户的用户名:root,密码:hoj123456。

(PS:此处有个小问题,通过nacos的界面添加用户后,用户名前面会带一个nacos,比如你的新用户名是root,添加后就变成了 nacos,root 。此处先留个坑,以后填。解决办法有两个,第一就是通过界面生成的用户后,直接操作数据库,把user表,把用户名改成root。第二就是直接用上面的sql直接插入数据)

然后在bin目录下重新执行 startup.cmd -m standalone 命令。

nacos部分完毕。

2.后台启动

前面的配置完毕后,我们启动后台代码,注意要启动的是DataBackupApplication不是JudgeServerApplication。

我们打开nacos,打开hoj-prod.yml 文件,

\hoj\hoj-springboot\DataBackup\src\main\resources\bootstrap.yml

把active改成dev

spring:
  profiles:
    active: dev
  application:
    name: hoj-data-backup
  cloud:

prod表示生产环境,dev表示开发环境。我们打开nacos,找到hoj-dev.yml文件

主要把里面的连接地址改成本地的地址:

hoj:
  jwt:
    # 加密秘钥
    secret: c9053f5cf95146848854f8cddee57631
    # token有效时长,1天,单位秒
    expire: 86400
    checkRefreshExpire: 43200
    header: token
  judge:
    # 调用判题服务器的token
    token: 801e2894ce43451a808f4315f0214269
  db:
    host: 127.0.0.1
    port: 3306
    public-host: 127.0.0.1
    public-port: 3306
    name: hoj
    username: root
    password: hoj123456
  

原来的host地址都是172.20.0.3,我们改成127.0.0.1。包括redis的配置都改成127.0.0.1,然后发布配置。

然后在StartupRunner.java中找到下面这些代码,然后注释掉

 //           addRemoteJudgeAccountToMySQL(Constants.RemoteOJ.HDU.getName(), hduUsernameList, hduPasswordList);
//            addRemoteJudgeAccountToMySQL(Constants.RemoteOJ.POJ.getName(), pojUsernameList, pojPasswordList);
//            addRemoteJudgeAccountToMySQL(Constants.RemoteOJ.CODEFORCES.getName(), cfUsernameList, cfPasswordList);
//            addRemoteJudgeAccountToMySQL(Constants.RemoteOJ.SPOJ.getName(), spojUsernameList, spojPasswordList);
//            addRemoteJudgeAccountToMySQL(Constants.RemoteOJ.ATCODER.getName(), atcoderUsernameList, atcoderPasswo

这段代码的意思是要读取nacos中配置文件,HOJ、POJ、SPOJ等等的用户名和密码,然后用来远程连接和判题等,因为我们刚才的hoj-dev.yml文件中没有配置相关的用户名和密码,所以先把这段代码注释掉,等后面配置了用户名和密码再重新启用。

我们在HOJ\hoj\hoj-springboot>

目录下执行 mvn clean 一下。然后点击 Debug启动项目

启动没有在浏览器打开新页面,注意看是不是有类似下面的界面

这个项目默认后台的启动端口是6688

我们打开浏览器在浏览器里输入一个测试接口(代码里随便找的):

http://localhost:6688/api/get-common-announcement

然后看到下面的界面,表示后台调通了。