數字基建準備工作完成以後,就要準備搭建執行平臺;簡單來說執行平臺是雲伺服器與應用服務的中間層起著承上啟下的作用。例如作業系統的選擇、執行模式的規劃、資料儲存的模式、系統安全的完善。
因為我只有一臺效能有限的雲伺服器,所以執行平臺達到的最終目的是應用服務高內聚,低耦合。
作業系統
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 https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
# Sudo 使用者
bash <(curl -sSL https://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 - 維基百科,自由的百科全書;僅學術引用,著作權歸作者所有。
來源:拒絕服務攻擊 - 維基百科,自由的百科全書;僅學術引用,著作權歸作者所有。