DEV Community

Cover image for 升級裝有 Plesk 的 Ubuntu 16.04
Leon
Leon

Posted on • Originally published at editor.leonh.space

1

升級裝有 Plesk 的 Ubuntu 16.04

對於伺服器系統的升級政策,有部份人主張「不做為」,理由多半是「求穩定」,他們以為不變會帶來穩定,但如果機器是對外服務的,不更新就是把自己暴露於資安風險之內,具體的證明請看 CVE 網站,以為不更新等於穩定的人,他們追求的與其說是政策,不如說是是一種自我信仰,如果把這層看似堅定的信仰剝開,會發現在信仰深處的藏著的是「升級了,自己的程式會壞掉」的恐懼,因此他們寧願把資安的風險暴露出來,也不願意更新自己的程式,但若站回經濟的角度看,不更新倒是一種最經濟的策略,如同我以往陳述過的觀點「應用是資產,程式碼是負債」(見〈你的程式是資產還是負債?〉,之所以不願投入更新,根本的原因是這個應用沒有帶來足夠的經濟價值,也就是說它是閒置資產,甚至可能是負債。

儘管本人也是高度經濟導向,但還好本人既不追求這種奇怪的信仰,也不打算把資安寄託於命運,更重視客戶對我們的託付,所以貢獻這篇升級筆記,希望能點化有心卻被信仰所困的有為青年。


我們這次的任務是把裝有 Plesk 的 Ubuntu 16.04 LTS 升級到 Ubuntu 18.04 LTS。

Ubuntu 是 Linux 的發行版之一,對 Linux 有接觸的人應該都知道;而 Plesk 則是 web 化的伺服器管理工具,包括 virtual host、防火牆、TLS 等與伺服器相關的組態設定都可以透過 Plesk 的 web 環境來操作,相較於台灣較多人用的 cPanel,個人是較偏好 Plesk。


在我手邊的一些機台,原本還是跑 Ubuntu 16.04,然而 Ubuntu 16.04 是 2016 年的系統,目前已經超過了 LTS 的常態維護週期:

Ubuntu Linux Lifecycle

來源:Ubuntu

而 Plesk 自 Plesk Obsidian 18.0.35 起也放下了對 Ubuntu 16.04 LTS 的支援,因此升級到 Ubuntu 18.04 LTS 是勢在必行。

先說明大步驟如下:

  1. 升級 Ubuntu
  2. 重新安裝 Plesk
  3. 小錯誤修正

看起來好像很普通,但其中有一些小細節需要注意,詳見下文。

升級 Ubuntu

在升級到 Ubuntu 18.04 前,先把 Ubuntu 16.04 更新到最新的狀態:

sudo apt upgrade
Enter fullscreen mode Exit fullscreen mode

更新後,視需要重開機,然後才跑升級程序:

sudo do-release-upgrade
Enter fullscreen mode Exit fullscreen mode

升級的過程頗長,中間可能會遇到 GRUB、Apache、OpenSSH、AppArmor、PAM 等系統元件的組態檔是否要取代或保留的提問,一般是會選擇讓原本電腦內的組態檔保留,避免升級後設定跑掉。

升級完之後重新開機,重開機之後,Plesk 納管的網站都還活著,然而問題是 Plesk 自己的入口變成卻 404,幸好 Ubuntu Linux 的 SSH 還進得去。

SSH 登入後,試著跑一些 plesk 的子命令都會收到無此工具的錯誤,例如下面這個錯誤訊息:

Unknown Plesk command-line utility: "admin"
Enter fullscreen mode Exit fullscreen mode

可能是在 Ubuntu 升級的過程中被刪了或斷了連結,但不要就此放棄,只要再裝一次 Plesk 就可以修復。

重新安裝 Plesk

秉持著救機一命勝造七級浮屠的慈悲,我們再安裝一次 Plesk。

然而在裝 Plesk 前,得先還原 Plesk 的資料庫 psa,否則後面的安裝程序會找不到 psa 而出錯。

還原 psa 資料庫

資料庫的備份在 /var/lib/psa/dumps/,進去要切換成 root 身份:

sudo su -
Enter fullscreen mode Exit fullscreen mode

進到 root 的 shell 後進入該目錄:

cd /var/lib/psa/dumps
Enter fullscreen mode Exit fullscreen mode

找出有 psa database 的備份檔:

zgrep "Current Database:" mysql.daily* | grep psa
Enter fullscreen mode Exit fullscreen mode

應該會有這些:

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`
...
Enter fullscreen mode Exit fullscreen mode

上列結果內的 mysql.daily.dump.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

Enter fullscreen mode Exit fullscreen mode

還原完成後,再來跑 Plesk 安裝程序。

安裝 Plesk

Plesk 的安裝程式很聰明,它是採取保留原組態為主的設計,不會裝完又全機歸零。

先下載安裝程式:

wget https://autoinstall.plesk.com/plesk-installer
Enter fullscreen mode Exit fullscreen mode

再讓它可執行:

chmod +x ./plesk-installer
Enter fullscreen mode Exit fullscreen mode

執行它:

sudo sh ./plesk-installer
Enter fullscreen mode Exit fullscreen mode

安裝步驟會問到到我們是要安裝所有的更新還是要增加或移除 Plesk 元件呢?這裡我們選「Install the latest available update」安裝所有的更新。

另外我在安裝期間會遇到某些套件下載失敗導致安裝失敗的問題,只要再跑一次安裝程式就可以重來。

如果前面的 psa 資料庫沒有先還原的話,安裝程式最後的組態階段就會有這行錯誤訊息:

ERROR 1049 (42000): Unknown database 'psa'
Enter fullscreen mode Exit fullscreen mode

如果有事先還原 psa 資料庫的話,應該可以是順順利利的完成。

裝完之後為了安心起見,先重開機一次,順便喝個水舒緩一下緊張的情緒。

確認成果與小錯誤修正

重開機之後,再次用瀏覽器確認 Plesk 的納管網站及 Plesk 自己的入口是否可以正確運作,現在看起來都是正常的,賀!

但實際上有些小錯誤還要再修正,目前發現的是 Plesk 防火牆元件異常,這可以進 Plesk 的組件管理頁裝回來,或者是移除掉。

參考資料

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more