談談我的「數字文具盒」 – 運行平台
數字基建準備工作完成以後,就要準備搭建運行平台;簡單來說運行平台是雲服務器與應用服務的中間層起着承上啟下的作用。例如操作系統的選擇、運行模式的規劃、數據存儲的模式、系統安全的完善。
因為我只有一台性能有限的雲服務器,所以運行平台達到的最終目的是應用服務高內聚,低耦合。
操作系統
Windows Server
Windows Server 是 Microsoft 專門創建用於服務器的一系列操作系統,旨在持續運行並為其他計算機提供資源。其提供便捷的 GUI 界面,Winodws 用戶學習成本較低,可以快速上手。
除非特殊需求,絕大部分情況下都很少使用 Windows Server 系列操作系統。 因為其系統資源佔用相對於 Linux 較高,通用性稍差以及社區文檔支持較少。同時 Windows Server 作為一款商業化操作系統,高昂的授權費用也是令人頭痛。但並不是不能用,只是我沒有嘗試過所以就不深入展開講述了。
Linux
Linux 是一種自由和開放源碼的類 UNIX 操作系統。該操作系統的內核由林納斯·托瓦茲在 1991 年 10 月 5 日首次發佈。Linux 具有跨平台、低資源佔用、可靠的安全性、社區的支持以及開源授權等優點,在服務器操作系統領域讓眾多 ITer 愛不釋手。Linux 在低性能雲服務器領域幾乎是絕對的王者,同時 Linux 豐富的發行版本和社區支持,基本上可以滿足你 90% 的需求。Linux 發行版本最明顯的差異就是社區的運營方式,可以分為開源基金支持和商業化運營。
Linux 那個發行版本好?
選擇你最喜歡的,綜合來說 Debian、Ubuntu 的使用率更高。 我會在不同的情況下選擇不同的社區版本使用,目前最常用的就是 Debian。
Linux 怎麼安裝軟件?
根據發行版本,使用包管理器可以方便快捷安裝軟件! Linux 不同於 Windows 的圖形化界面,大部分服務器管理方式也都是黑黑的命令行終端。但是 Linux 的日常系統更新,軟件安裝卻只需要一條命令即可。
# apt 安裝 git
apt install git
Linux 安裝軟件很慢
可以設置境內 Linux 鏡像源或者使用代理服務。 因為大部分 Linux 的官方源的服務器都在境外,所以境內使用 Linux 官方源安裝軟件就會超級慢,使用體驗和百度雲沒開會員差不多。國內的開源愛好者為了解決這個問題,維護了《一鍵更換國內軟件源》倉庫。
# root 用戶
bash <(curl -sSL //gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
# Sudo 用戶
bash <(curl -sSL //gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
運行模式
雲服務器的操作系統安裝完成後,規劃合理的運行模式依舊很重要。因為我的目的是應用服務高內聚,低耦合,所以我使用的是容器模式;最常用的就是大名鼎鼎的 Docker。除了容器模式,還有裸機運行模式;同時低門檻上手,文檔完善的管理面板就是寶塔了。可以結合實際情況來選擇,但是我真的不建議用寶塔。🤐🤐🤐
裸機
裸機模式就是應用服務直接跑在操作系統上,性能利用率高、性能損耗少。但是環境管理難,容易出現莫名其妙的問題而且還不容易找到原因。而且你需要面對黑黑的命令行管理終端,面對新手朋友及其不友好。
我就曾遇見一個網友學習使用 MySQL,當時他安裝了兩個版本的 MySQL,端口分別是 3306,3307。然後在數據庫管理軟件使用的 3307,命令行終端使用的 3306。最後命令行終端執行的 SQL 操作語句,在數據庫管理軟件中完全查不到數據。向我們提問這是為什麼?最後真的無力吐槽了······
寶塔
寶塔面板作為國內一款安全高效的服務器運維面板,寶塔提供的 Web 管理頁面讓運維簡單高效。可以一鍵配置:LAMP/LNMP、網站、數據庫、FTP、SSL,通過 Web 端輕鬆管理服務器。但是但是它翻過車,曾有一個更新導致眾多站長的數據庫被爆,損失慘重! 雖然曾經翻過車,但是寶塔的學習成本低,上手容易入門快。所以就結合實際情況,理性使用。
容器
容器 (Container) 是一種基礎工具。泛指任何可以用於容納其它物品的工具,可以部分或完全封閉,被用於容納、儲存、運輸物品。物體可以被放置在容器中,而容器則可以保護內容物。
Docker 是一個開放源代碼的開放平台軟件,用於開發應用、交付應用、運行應用。Docker 允許用戶將基礎設施中的應用單獨分割出來,形成更小的顆粒,從而提高交付軟件的速度。 Docker 容器與虛擬機類似,但二者在原理上不同。容器是將操作系統層虛擬化,虛擬機則是虛擬化硬件,因此容器更具有便攜性、高效地利用服務器。
Dokcer 容器的特性就是虛擬化,提供一個隔離的環境。例如你可以運行多個版本的應用服務,其環境不會產生任何衝突。現在絕大部分的應用服務都提供了 Docker 鏡像,可以方便快捷的搭建、運行應用服務;例如搭建一個 nginx 服務:
docker run --name nginx -d nginx
數據存儲
因為數據就如同水一樣,應用服務缺失了數據也就失去了它的意義,所以數據存儲尤為重要。數據庫的選擇,靜態資源的管理備份等。數據存儲備份還可以減少數據損失造成的價值損壞最小化。
小心使得萬年船,常備份,多備份!
數據庫
數據庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的資料執行新增、截取、更新、刪除等操作。所謂數據庫是以一定方式儲存在一起、多個用戶共享、具有儘可能小的冗餘度、與應用程序彼此獨立的數據集合。
MySQL / MariaDB 哪個好?
應用服務需要那個就用那個,盡量選擇通用版本。 MariaDB 是 MySQL 關係數據庫管理系統的一個復刻,由社區開發,有商業支持,旨在繼續保持在 GNU GPL 下開源。簡單來說 MariaDB 就是 MySQL 的兒子。
其他的數據庫管理系統可以用么?
結合實際情況; 雖然數據庫管理系統千千萬,但是常用的就是那幾個呀。
備份
數據一樣要多備份、常備份! 所有雲廠商的雲服務器都提供了相對基礎的數據備份,但是他們不會保證你的數據一定不會損壞丟失。所以可以通過以下方式低成本備份:
- 下載備份電腦里。
- 下載備份硬盤裡。
- 加密備份雲盤裡。
總之就是一定要多備份,常備份!管它冷備、熱備、異地多活總之就是多備份,一定不會錯。淘寶上 500GB 的機械硬盤 25 元左右一塊,買 4 塊回來都做成冷備;公司扔一塊、學校扔一塊、家裡扔一塊、老家扔一塊,理論上來說數據全部丟失損壞的機率為 (2^4+N)≤6.25%。
系統安全
系統安全是老生常談的話題了,但是系統安全門檻高,各種問題層出不窮;最後也許你也不知道該怎麼做好系統安全。基本從下面的兩方面出發就可以快速杜絕大部分系統安全問題。
網絡防火牆
網絡服務最常用的端口,例如:22、80、443 等;如果你購買的是雲服務器,那麼你可以利用雲服務商的防火牆管理面板只放開應用服務的端口。在使用 nginx 做代理的情況下,所有的應用服務基本都可以走 80 或 443 端口,那麼服務器就可以只打開這兩個端口,其他的包括 22 端口需要用到的時候再打開。Docker 容器模式下更可以使用網橋做內外網隔離,縱使攻擊者進入了服務器,能進行的操作也只是有限的。
最最最壞的一種情況就是,全軍覆沒了。這種情況下,如果你做好了完全的、充分的數據備份,任由它隨便攻擊。
無所謂 ~ 誰會愛上誰 ~
DDOS
網絡攻擊最有效,最常見的一種方法就是分佈式拒絕服務攻擊(DDOS)。其目的在於使目標電腦的網絡或系統資源耗盡,使服務暫時中斷或停止,導致其正常用戶無法訪問。這種情況下我們可以通過使用 CDN 來隱匿雲服務器真實物理 IP 地址,讓攻擊者找不到攻擊目標從而放棄攻擊。
引用
來源:容器 – 維基百科,自由的百科全書;僅學術引用,著作權歸作者所有。
來源:Docker – 維基百科,自由的百科全書;僅學術引用,著作權歸作者所有。
來源:拒絕服務攻擊 – 維基百科,自由的百科全書;僅學術引用,著作權歸作者所有。