關於HOJ的搭建和二開經驗小結

随手一只风發表於2024-05-25

經驗在最後,先說流程。

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

相關文章