关于HOJ的搭建和二开经验小结
经验在最后,先说流程。
除了HOJ,之前先装的HDU,属实难用,然后是hustOJ,嗯很好用,但架不住丑,对管理员实在不友好。
好了不闲记,进入正题:
一、流程
1、官网文档先过一遍。
2、配置好docker和docker-compose(这里注意看下面的经验)。反正尽量不要用官网提供的方式,自己百度安装。
3、进行项目克隆。尽量用码云的啦,GitHub除非你先在Ubuntu上装个clash for linux,实在难用。
4、等待下载,下载完一定要记清下面两个文件的位置。
├── docker-compose.yml
├── .env
5、进入.env改密码。别改错了地方。
6、像我是机房内网环境HOJ无法加载,需要取消CDN转发,不然学生机一旦断网,是加载不出来页面的。具体注意看下面的经验,以及取消前端CDN转发。
7、npm打包,这里遇到的坑蛮多的,总之还是在虚拟机多存快照,随便试,解决一个大问题继续拍摄快照,解决不了回滚快照。
8、二开的话,看下面的经验咯。
9、花了几天时间,零零碎碎的该忘的都忘了,不知道该记些什么,下次要养成边查问题解决问题边记的习惯。
10、以上,备用。
二、经验
1、要先npm install(最好先更新apt update),进行依赖下载之后才能进行npm run build进行打包。
2、在1之前需要现更换镜像源
淘宝镜像源
npm config set registry https://registry.npm.taobao.org (旧版,已到期)
淘宝中国镜像源
npm config set registry https://registry.npmmirror.com (新版)
腾讯云镜像源
npm config set registry http://mirrors.cloud.tencent.com/npm/
华为云镜像源
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
阿里云 NPM 镜像源:
https://npm.aliyun.com
官方默认全局镜像源:
npm config set registry https://registry.npmjs.org
检查当前镜像
npm config get registry
3、如果出现hoj服务器错误需要刷新的提示,重启系统可以解决。
4、因为npm和nodejs版本问题,最好用最新的,npm install npm@latest。
5、如果下载失败,建议先清缓存npm cache clean --force;接着在项目目录下打开隐藏,删除node_modules 文件夹和 package-lock.json 文件,然后重新执行 npm install。
5、注意nodejs要是17版本之前的(经过他妈的n次报错卸载,17版本不能用,用16的),不然会报错,注意第3点有误。安装过程
创建目录:
sudo mkdir -p /usr/local/lib/nodejs
解压二进制包至存放目录
sudo tar -xJvf node-v16.20.2-linux-x64.tar.xz -C /usr/local/lib/nodejs
进入解压后的目录:
cd /usr/local/lib/nodejs/node-v16.20.2-linux-x64
将Node.js二进制包添加到系统环境变量:
sudo cp -R * /usr/local/
验证安装:
node -v
npm -v
6、遇到了一个证书过期的问题(这里回到第五步就行了,主要还是把package-lock.json 文件删掉,一切问题无了)
清除npm缓存
npm cache clean --force
取消ssl验证:
npm config set strict-ssl false
之后再npm install
7、部署docker-compose、docker、npm(nodejs自带)时,关注好版本,最好下载好二进制离线安装,网络易丢包,且需要安装各种镜像源等环境,然后报各种错,麻烦。
8、打包文件传到 /home/zt/hoj-deploy/standAlone/html/ 下面。
9、你要改的各种前端在dist的/home/zt/hoj-deploy/standAlone/hoj/www/html/dist/assets/js/app.99ec584b.js中,注意重点是app.99ec584b.js这个文件,ubuntu的文本编辑器也好,vim也罢,是打开会卡顿的,建议下载到桌面,用hbuild打开,进行格式化,然后利用查找功能和F12结合进行二开。
10、遇到服务器不停的提示“服务器错误,请重新刷新”,小伙子不要慌,有两个可能,数据库连接还没有加载完,还有一种可能还是数据库连接还没有加载完,所以你有两个办法,第一个办法是直接重启,第二个办法是,不好意思就不是直接重启了,就是到docker-compose.yml文件所在目录执行docker-compose down,完事之后再执行docker-compose up -d,注意这个-d是后台执行的意思,so,打开127.0.0.1运行一下试试,没作用那就再次重启,重启之后还是有问题,他娘的,直接等等。(其实听他的,一直刷新,然后等待就好了,反正是数据库有延迟)
11、一般内存都会超过4G的,记得参考官网文档进行修改。反正我是内网搭建,服务器最低都是32G了。