升級裝有 プライスク的 Ubuntu 16.04


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

來源:ウバンチュウ
而 プライスク自 プレーク黒曜石18.0.35起也放下了對 Ubuntu 16.04 LTS的支援,因此升級到 Ubuntu 18.04 LTS是勢在必行.
先說明大步驟如下:
  • 升級 ウバンチュウ
  • 重新安裝 プライスク
  • 小錯誤修正
  • 看起來好像很普通,但其中有一些小細節需要注意,詳見下文.

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

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

    還原 PSA資料庫
    資料庫的備份在/var/lib/psa/dump/進去要切換成 根身份:
    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'