经验在最后,先说流程。

除了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了。

关于HOJ的搭建和二开经验小结的更多相关文章

  1. NC57,NC63-NC二开经验总结

    版主2010级市场营销专业本科生 2013年8月入达内培训Java相关技术 12月入职,做用友NC的二次开发工作 2015年4月离职,4中下旬入职一家互联网金融企业 下面是做NC二开期间积累的一些常用 ...

  2. Redash 二开 - 后端环境搭建

    Redash 二开 - 后端环境搭建 一.操作系统选择 官方文档有一句话:Windows users: while it should be possible to run Redash on a W ...

  3. 还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠

    相比于从零开始构建全套信息化系统,基于成熟的ERP等行业软件做二次开发是更多中大型企业应对个性化软件需求的首选方案.如何在二开模块中,可靠地对成品软件的数据库进行读写操作,以满足单据自动创建.元数据自 ...

  4. (原创)LAMP搭建之二:apache配置文件详解(中英文对照版)

    LAMP搭建之二:apache配置文件详解(中英文对照版) # This is the main Apache server configuration file. It contains the # ...

  5. Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python

    Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python 前面举例了Selenium+Eclipse+Junit+TestNG自动化测试环境的搭建,在前一篇的基础上, ...

  6. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...

  7. Odoo:全球第一免费开源ERP库龄表的简单实现方法(无需二开)

    问题背景 希望查看库龄超过30天的货物,该如何实现?此种简单数据查询需要二开吗? 解决方案 方法一:Stock Quant列表视图增加过滤器 <filter string="库龄超30 ...

  8. SAAS云平台搭建札记: (二) Linux Ubutu下.Net Core整套运行环境的搭建

    最近做的项目,由于预算有限,公司决定不采购Windows服务器,而采购基于Linux的服务器. 一般的VPS服务器,如果使用Windows系统,那么Windows Server2012\2016安装好 ...

  9. odoo导入功能二开

    原来有的导入功能相信很多小伙伴对其功能不是很满意,不过没关系,我们可以二开啊,把它的功能改造成你想要的样子,接下来让我们看看怎么办吧 例如我想把员工导入功能中添加上用户同步注册功能 首先,我要找到原模 ...

  10. vue项目搭建 (二) axios 封装篇

    vue项目搭建 (二) axios 封装篇 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── ap ...

随机推荐

  1. PHP中substr() mb_substr() mb_struct()的区别和用法

    PHP substr() 函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函 数,mb_substr() /mb_strcut的 ...

  2. [oeasy]python0133_[趣味拓展]颜文字_流石兄弟_表情文字_2ch_kaomoji

    颜文字 回忆上次内容 上次我们了解unicode 里面有各种字体 甚至还有emoji   emoji 本质上也是文字 按照unicode的方式编码 存储时按照utf-8的方式编码 显示时按照系统定义的 ...

  3. oeasy教您玩转vim - 21 - 状态横条

    状态横条 回忆上节课内容 我们上次研究了标尺 标尺 开启 se ru 关闭 se noru 行号 开启 se nu 关闭 se nonu 命令位置 开启 se showcmd 关闭 se noshow ...

  4. C#/.NET这些实用的编程技巧你都会了吗?

    DotNet Exercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程常用语法.算法.技巧.中间件.类库练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.N ...

  5. PowerShell 使用 Azure

    PowerShell 使用 Azure Azure 提供了三种管理工具: Azure 门户:Azure 门户是一个网站,可在其中创建.配置和更改 Azure 订阅中的资源,该门户是一个图形用户界面 ( ...

  6. 推荐几款.NET开源且功能强大的实用工具,助你提高工作开发效率!

    前言 俗话说得好"工欲善其事,必先利其器",今天大姚给大家推荐8款.NET开源且功能强大的实用工具,助你提高工作开发效率! DevToys 一款基于C#开源(MIT License ...

  7. nodejs的服务器,用ffmpeg推流

    http://m.zhizuobiao.com/node/node-19061200018/ ffmpeg -list_devices true -f dshow -i dummyffmpeg -f ...

  8. AI辅助教学,甚至AI教学,逐渐成为可能

    看新闻,有感: 太火爆!一门课,两个月吸粉十五万人!企业纷纷布局!千亿级大市场,来了?

  9. UE4打包后的游戏,无法打卡其他关卡的解决办法

    现象: 程序调试的时候可以通过主菜单打开其他关卡界面,但是打包之后就无法通过按钮打开,一直显示错误 Warning: Travel Failure: [ClientTravelFailure]: Fa ...

  10. 【牛客刷题】HJ68 成绩排序

    题目链接 这题本身就是一个排序题,按照学生成绩排序,成绩一样的按照输入的前后顺序排. 如果用Java,那么利用ArrayList能很轻松的完成: import java.util.ArrayList; ...