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
然后看到下面的界面,表示后台调通了。