升級裝有 프로스크的 Ubuntu 16.04

4818 단어 ubuntuplesk
對於伺服器系統的升級政策,有部份人主張「不做為」,理由多半是「求穩定」,他們以為不變會帶來穩定,但如果機器是對外服務的,不更新就是把自己暴露於資安風險之內,具體的證明請看 CVE 網站 ,以為不更新等於穩定的人,他們追求的與其說是政策,不如說是是一種自我信仰,如果把這層看似堅定的信仰剝開,會發現在信仰深處的藏著的是「升級了,自己的程式會壞掉」的恐懼,因此他們寧願把資安的風險暴露出來,也不願意更新自己的程式,但若站回經濟的角度看,不更新倒是一種最經濟的策略,如同我以往陳述過的觀點「應用是資產,程式碼是負債」(見〈 你的程式是資產還是負債? 〉,之所以不願投入更新,根本的原因是這個應用沒有帶來足夠的經濟價值,也就是說它是閒置資產,甚至可能是負債.
儘管本人也是高度經濟導向,但還好本人既不追求這種奇怪的信仰,也不打算把資安寄託於命運,更重視客戶對我們的託付,所以貢獻這篇升級筆記,希望能點化有心卻被信仰所困的有為青年.
我們這次的任務是把裝有 프로스크的 Ubuntu 16.04 LTS升級到 Ubuntu18.04 LTS
Ubuntu是 Linux的發行版之一,對 Linux有接觸的人應該都知道;而 프로스크則是 그물 모양의 물건化的伺服器管理工具,包括 가상 호스트防火牆、TLS等與伺服器相關的組態設定都可以透過 프로스크的 그물 모양의 물건環境來操作,相較於台灣較多人用的 칼페온個人是較偏好 프로스크
在我手邊的一些機台,原本還是跑 Ubuntu 16.04然而 Ubuntu 16.04是 2016年的系統,目前已經超過了 LTS的常態維護週期:

來源:Ubuntu
而 프로스크自 플렉시크 블랙스톤 18.035起也放下了對 Ubuntu 16.04 LTS的支援,因此升級到 Ubuntu18.04 LTS是勢在必行.
先說明大步驟如下:
  • 升級 Ubuntu
  • 重新安裝 프라이스크
  • 小錯誤修正
  • 看起來好像很普通,但其中有一些小細節需要注意,詳見下文.

    升級 Ubuntu


    在升級到 Ubuntu 18.04前,先把 Ubuntu 16.04更新到最新的狀態:
    sudo apt upgrade
    
    更新後,視需要重開機,然後才跑升級程序:
    sudo do-release-upgrade
    
    升級的過程頗長,中間可能會遇到 GRUB、Apache、OpenSSH、AppArmor、PAM等系統元件的組態檔是否要取代或保留的提問,一般是會選擇讓原本電腦內的組態檔保留,避免升級後設定跑掉.
    升級完之後重新開機,重開機之後,프로스크納管的網站都還活著,然而問題是 프로스크自己的入口變成卻 404,幸好 Ubuntu Linux的 야유還進得去.
    야유登入後,試著跑一些 plesk 的子命令都會收到無此工具的錯誤,例如下面這個錯誤訊息:
    Unknown Plesk command-line utility: "admin"
    
    可能是在 Ubuntu升級的過程中被刪了或斷了連結,但不要就此放棄,只要再裝一次 프로스크就可以修復.

    重新安裝 프로스크


    秉持著救機一命勝造七級浮屠的慈悲,我們再安裝一次 프로스크
    然而在裝 프로스크前,得先還原 프로스크的資料庫 psa ,否則後面的安裝程序會找不到 psa 而出錯.

    還原 psa資料庫


    資料庫的備份在/var/lib/psa/dumps/進去要切換成 뿌리身份:
    sudo su -
    
    進到 뿌리的 껍데기後進入該目錄:
    cd /var/lib/psa/dumps
    
    找出有 psa 데이터베이스的備份檔:
    zgrep "Current Database:" mysql.daily* | grep psa
    
    應該會有這些:
    mysql.daily.dump.0.gz:-- Current Database: `psa`
    mysql.daily.dump.1.gz:-- Current Database: `psa`
    mysql.daily.dump.2.gz:-- Current Database: `psa`
    mysql.daily.dump.3.gz:-- Current Database: `psa`
    ...
    
    上列結果內的 mysql.매일.쓰레기를 버리다.0.gz這份檔案是最近的備份,把它還原回去:
    
    zcat mysql.daily.dump.0.gz | \
    sed -n '/-- Current Database: `psa`/,/-- Current Database:*/p' | \
    MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin
    
    
    還原完成後,再來跑 프로스크安裝程序.

    安裝 프로스크


    프로스크的安裝程式很聰明,它是採取保留原組態為主的設計,不會裝完又全機歸零.
    先下載安裝程式:
    wget https://autoinstall.plesk.com/plesk-installer
    
    再讓它可執行:
    chmod +x ./plesk-installer
    
    執行它:
    sudo sh ./plesk-installer
    
    安裝步驟會問到到我們是要安裝所有的更新還是要增加或移除 프로스크元件呢?這裡我們選"최신의 사용 가능한 업데이트 설치"安裝所有的更新.
    另外我在安裝期間會遇到某些套件下載失敗導致安裝失敗的問題,只要再跑一次安裝程式就可以重來.
    如果前面的 psa 資料庫沒有先還原的話,安裝程式最後的組態階段就會有這行錯誤訊息:
    ERROR 1049 (42000): Unknown database 'psa'
    
    如果有事先還原 psa 資料庫的話,應該可以是順順利利的完成.
    裝完之後為了安心起見,先重開機一次,順便喝個水舒緩一下緊張的情緒.

    確認成果與小錯誤修正


    重開機之後,再次用瀏覽器確認 프로스크的納管網站及 프로스크自己的入口是否可以正確運作,現在看起來都是正常的,賀!
    但實際上有些小錯誤還要再修正,目前發現的是 프로스크防火牆元件異常,這可以進 프로스크的組件管理頁裝回來,或者是移除掉.

    參考資料

  • Unable to access Plesk: Unknown database 'psa'
  • Plesk is not accessible: Failed opening required 'auth.php'
  • 좋은 웹페이지 즐겨찾기