UOJ ubuntu 14升級(jí)20
UOJ官網(wǎng):https://uoj.ac?
UOJ部署:首頁 - UOJ部署指北 (universaloj.github.io)
新建UOJ項(xiàng)目,請(qǐng)按照上面文檔來。本篇攻略講舊版升級(jí)問題。
1.進(jìn)入docker 容器,顯示系統(tǒng)版本命令?lsb_release -a

2.切換apt源,文件?/etc/apt/sources.list
? ? ? ? ? 先備份: mv sources.list sources.list.bak
? ? ? ? ? 寫入阿里源:vim sources.list
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
3.apt相關(guān)更新,非root用戶記得 root
? ? ? ? ?apt update &&? apt upgrade &&? apt autoremove
? ? ? ? ?1.如果出現(xiàn)warning信息,軟件找不到?apt -f install
? ? ? ? ?2.如果出現(xiàn)“apt list --upgradable”提示,需要手動(dòng)升級(jí)一些軟件包。
???????????? ? ? ? apt list --upgradable 查看待升級(jí)軟件
? ? ? ? ? ? ? ? ? ?apt install + 軟件名稱
4.安裝系統(tǒng)升級(jí)命令
? ? ? ? ??1.運(yùn)行第3步的時(shí)候,有可能會(huì)直接升級(jí)到16版本。需要通過第1步的命令確認(rèn)一下
? ? ? ? ??2.apt install update-manager-core
? ? ? ? ? 3.sudo do-release-upgrade? 升級(jí)系統(tǒng)
? ? ? ? ? ? ? ? ???遇到y(tǒng)n兩項(xiàng)選擇的時(shí)候,選y
???????????????? ? 遇到y(tǒng)n,defaut 三項(xiàng)選擇,是和apache2有關(guān)的,直接敲回車
????????系統(tǒng)升級(jí),14、16、18、20這樣升級(jí),并不是14直接到20了
5.當(dāng)系統(tǒng)升級(jí)到20的時(shí)候,不少軟件都會(huì)跟著升級(jí),例如php、apache2、python、gcc等。
? ? ? ? ?? apache2重啟動(dòng)命令:service apache2 restart?
????????? ? ? php7.4需要處理的事情:? ????
? ? ? ? ? ? ? ? ?apt install php7.4-mysql
? ? ? ? ? ? ? ? ?apt install php7.4-zip
? ? ? ? ? ? ? ? ?apt install php7.4-mbstring
?????????
? ? ? ? ? ? 修改php.ini文件
? ? ? ? ? ? ? ? ?vim /etc/php/7.4/apache2/php.ini?
???????????? ? ? ? 可暫時(shí)將?display_errors = On,開啟錯(cuò)誤顯示
?????? ? ? ? ? ?extension=mysqli、extension=zip、extension=mbstring 擴(kuò)展打開,
????????????????沒有的添加即可
????? 重啟apache2項(xiàng)目應(yīng)該跑起來了,修改web端
????????????app/lib/DB.php ,mv DB.php DB5.php
????????????????? ? ? ? ? ? ? ? ? ? ? ? mv DB7.php DB.php
????? 網(wǎng)站端:??
? ? ? ? ? ? ?? 將構(gòu)造函數(shù)里的mysqli_connect() 修改為, new mysqli();
? ? ? ? ? ? 修改?num_rows() 方法,修改:
????????? ? ? ? ? ?global $uojMySQL;
? ? ? ? ? ? ? ? ? ?return MYSQLI_NUM_rows($uojMySQL);
????? ? ?修改 index.php文件,將Session_start()函數(shù)注釋掉。
????????好了,這時(shí)候項(xiàng)目運(yùn)行起來了。還是會(huì)有一些小錯(cuò)誤,可以選擇根據(jù)報(bào)錯(cuò)信息修改一下。
? ? ? ?或者將display_errors = Off,看不見 0.0
6.評(píng)測(cè)機(jī)
????????ps -ef | grep judge 看一下評(píng)測(cè)機(jī)是否啟動(dòng)
????????su local_main_judger -c '~/judge_client/judge_client update'
????????vim /root/up 文件里,可以看到評(píng)測(cè)機(jī)的啟動(dòng)命令。運(yùn)行下,看有什么報(bào)錯(cuò)
????????python 的requests 庫需要重新安裝一下,不著急。
????????下載新版的judge: https://github.com/vfleaking/uoj/tree/master/judger?
????????舊版的judge可以mv掉做個(gè)備份,新版的上傳服務(wù)器。
????????通過 docker cp xxx? 容器ID:/xxxx 命令復(fù)制到容器內(nèi)。
????? ? 運(yùn)行??su local_main_judger -c '~/judge_client/judge_client update'
????????新版judge 使用python 3.9版本,需要安裝3.9版本的python
????????根據(jù)錯(cuò)誤提示,安裝相關(guān)的東西。
????????c庫? apt install libseccomp-dev
????? ? judge_client? 280(243?) 行 execute(f'touch -a {pipes.quote(path)}')注釋掉。
????????新版本的judge代碼有不少優(yōu)化。
????????好了,現(xiàn)在judge啟動(dòng)起來了,web也沒問題了,提交一個(gè)代碼試試。
總結(jié):
????????根據(jù)記憶中的流程,和一些筆記整理的。后續(xù)在優(yōu)化
????????
? ? ? ??