CentOS 8 上的 Web 伺服器,附有 php7、node.js 和 redis

前言

CentOS作業系統的新版本,CentOS 2發布已經過去兩天了。到目前為止,網路上已經有不少關於它是如何完成工作的文章,所以我決定填補這個空白。 此外,我不僅會告訴您如何安裝這對程序,還會告訴您我通常如何在現代世界的虛擬環境中安裝 Linux 來執行典型任務,包括磁碟分割區等。

但首先,我想簡單談談為什麼值得從之前的所有版本切換到這個版本,原因有二:

  1. php7! 在先前版本的CentOS中,安裝的是「正統」的php5.4...

    好吧,說得更嚴肅一點,很多包一起跳過了幾個版本。 我們(類紅帽操作系統的粉絲)終於進入了,如果不是進入未來,那麼至少進入了現在。 Ubuntu 支持者將不再嘲笑我們並指責我們,嗯……至少在一段時間內;)。

  2. 從 yum 過渡到 dnf。 主要區別在於,現在正式支援同時使用多個版本的軟體包。 就在八個中,我從未發現這有用,但聽起來很有希望。

創建虛擬機

有不同的虛擬機器管理程序,我沒有目標為讀者量身定制特定的虛擬機管理程序,我將告訴您一般原則。

Память

首先...要安裝從 7 開始的 CentOS 系統,在我看來,6 中也是如此(「但這還不確定」),你需要 最低限度 2 GB 記憶體。 所以我建議你先捐這麼多。

但如果有的話,安裝後記憶體大小可以減少。 我查了一下,在 1 GB 的情況下,裸系統運作得很好。

磁盤

對於正常安裝,您應該建立一個容量為 20-30 GB 的虛擬磁碟。 這對於系統來說已經足夠了。 還有第二個資料磁碟。 它可以在創建虛擬機器階段和之後添加。 我通常會稍後添加。

處理器

在一個核心上,裸系統不會減慢速度。 而且由於資源是可以自由擴展的,所以我認為在安裝階段提供更多資源沒有任何意義(除非您完全了解需求並且懶得再次進入配置器)

其餘的通常可以保留為預設值。

實際安裝

那麼...讓我們啟動安裝程式...就我個人而言,我很長一段時間以來都只是以虛擬機的形式安裝此類服務,所以我不會描述閃存驅動器上的各種分發記錄-我只是掛載ISO 作為我最喜歡的虛擬機器管理程式中的 CD,下載後即可使用。

基本安裝非常典型,我只詳細介紹幾點。

貨源選擇

自從第八個版本發布以來,Yandex 的鏡像已經閒置了好幾天。 嗯,也就是說,它週期性地上升,然後再次開始顯示錯誤。 我確信這是由於服務負載過大造成的。 因此,為了表明來源,我個人必須輸入通常的地址,而不是輸入 這裡,在那裡選擇我喜歡的鏡像並在安裝程式視窗中手動輸入地址。 這裡要記住的是,需要指定目錄所在資料夾的路徑 儲存庫數據。 例如, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

磁碟分割區

在我看來,這個問題頗具宗教色彩。 每個管理員在這個問題上都有自己的立場。 但我還是會分享我對這個問題的看法。

是的,原則上,您可以將整個空間分配給根目錄,並且它會起作用,大多數情況下甚至效果很好。 那為什麼要用不同的部分圍住花園呢? ——我認為主要有兩個原因:配額和可移植性。

例如,如果出現問題且主資料分割區出現錯誤,您希望仍然能夠啟動系統並執行復甦措施。 因此,我個人給/boot分配了一個單獨的分割區。 有一個核心和一個引導程式。 通常 500 MB 就足夠了,但在極少數情況下可能需要更多,並且考慮到我們已經習慣以 TB 為單位測量空間,我為此部分分配 2GB。 而且這裡重要的是不能用lvm來做。

接下來是系統的根。 對於正常安裝,每個系統從來不需要超過 4 GB,但在計劃的事件期間,我經常使用 /tmp 目錄來解壓縮發行版,而且我認為在現代系統中將其專用於單獨的分區沒有任何意義它是自動清潔的,因此不會被填充。 所以我為root分配了8GB。

交換...總的來說,它幾乎沒有實際用途。 如果您開始在伺服器上使用交換,那麼在現實世界中,這僅意味著伺服器需要添加更多 RAM。 否則,肯定會出現效能問題(或某些程式“洩漏”記憶體)。 因此,本節僅用於診斷目的。 因此,2 GB 是一個非常好的數字。 是的,無論伺服器上有多少記憶體。 是的,我讀過所有關於記憶體容量與交換容量比率的文章......恕我直言,它們已經過時了。 在十年的實踐中我從來沒有需要過這個。 10 年前我用過它們,是的。

恕我直言,每個人都可以自己決定是否將 /home 分配到單獨的分區。 如果伺服器上有人會主動使用這個目錄,最好先分配它。 如果沒有人,就沒有必要。

接下來,/var。 在我看來,絕對應該強調這一點。 首先,您可以將自己限制為 4 GB,然後看看效果如何。 是的,我所說的「進展如何」是指

  1. 首先,您始終可以在 /var 子目錄中掛載另一個磁碟(稍後我將透過範例進行展示)
  2. 其次,我們有 lvm - 您可以隨時添加它。 當太多日誌開始湧入其中時,您通常必須添加它。 但我從來沒能提前預測到這個數字,所以我從 2 GB 開始,然後觀看。

未分配的空間將在卷組中保持空閒狀態,並且以後始終可以使用。

LVM

所有 在 LVM 中建立 /boot 以外的分割區是有意義的。 是的,包括交換。 是的,根據所有建議,交換區應該位於磁碟的開頭,但對於 LVM 來說,原則上無法確定其位置。 但正如我上面所寫,你的系統 不應該 完全使用交換。 因此,他在哪裡並不重要。 好吧,老實說,我們不是活在 95 年!

此外,在 LVM 中,您需要能夠使用幾個基本實體:

  • 物理體積
  • 卷組
  • 邏輯磁碟區

物理卷被組合成組,每個物理卷只能屬於一個組,一個組可以同時位於多個物理卷上。
並且每個邏輯卷都在一組中。

但是……媽的,又是21世紀了。 伺服器是虛擬的。 將應用於物理機制的相同機制應用於它們是沒有意義的。 對於虛擬系統來說,將資料與系統分開非常重要! 這非常重要,特別是對於快速將資料切換到另一個虛擬機器的能力(例如,切換到新作業系統時)以及一般來說對於各種有用的功能(例如,使用虛擬機器管理程式工具按分區進行單獨備份) 。 因此,一個卷組用於系統,而另一個卷組則必然用於資料! 這種邏輯劃分對生活有很大幫助!

如果在建立虛擬機器時只建立了一個虛擬硬碟,則配置到此結束。 如果有兩個,那就不要標記第二個。

讓我們開始安裝。

安裝後

至此,新安裝的系統終於啟動了。 您需要檢查的第一件事是互聯網。

ping ya.ru

有答案嗎? - 太好了,請按 Ctrl-C。
如果沒有,那就建立一個網絡,沒有這個就沒有生活,但這不是我文章的主題。

現在,如果我們還沒有在 root 下,請進入 root 下,因為輸入 這樣的 sudo 的命令數量個人讓我崩潰了(願偏執的管理員原諒我):

sudo -i

現在我們要做的第一件事就是輸入

dnf -y update

如果你在 2019 年閱讀這篇文章,很可能不會發生任何事情,但值得一試。

現在讓我們配置剩餘的磁碟

假設系統分割區是xvda,那麼資料盤就是xvdb。 好的。

大多數建議都會以“運行 fdisk 並創建分區...”開始

所以這是 錯誤的!

我再說一遍,因為它太重要了! 在這種情況下,要使用佔用整個虛擬磁碟的LVM,在其上建立分割區是有害的! 這句話中的每個字都很重要。 如果我們在沒有 LVM 的情況下工作,我們就需要這樣做。 如果我們的磁碟上有系統和數據,我們就需要它。 如果由於某種原因我們需要將一半的磁碟留空,我們也應該這樣做。 但通常所有這些假設都是純粹理論上的。 因為如果我們決定在現有分區中添加空間,那麼最簡單的方法就是使用此配置。 易於管理比許多其他事情更重要,因此我們有目的地轉向這種配置。

而且方便的是,如果要擴展資料分區,只需向虛擬分區添加空間,然後使用 vgextend 擴展組即可! 在極少數情況下,可能還需要其他東西,但至少您不必在一開始就擴展邏輯卷,這已經很好了。 否則,要擴展這個卷,他們建議首先刪除現有的捲,然後在上面創建一個新的...這看起來不太好並且無法實時完成,但是根據我指出的場景進行擴展可以是“即時”執行,甚至無需卸載分區。

因此,我們建立一個實體卷,然後建立一個包含它的捲組,然後為我們的伺服器建立一個分割區:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

在這裡,您可以指定一個小字母,而不是大寫字母“L”(以及 GB 大小),然後指定相對大小,而不是絕對大小,例如,使用當前可用空間的一半卷組,需要指定“-l + 50%FREE”

最後一個命令格式化 ext4 檔案系統中的分割區(到目前為止,根據我的經驗,在一切損壞的情況下,它顯示出最大的穩定性,所以我更喜歡它)。

現在我們將分割區安裝在正確的位置。 為此,請將正確的行新增至 /etc/fstab:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

我們撥打

mount /var/www

如果出現錯誤,請發出警報! 因為這意味著 /etc/fstab 中有錯誤。 下次重新啟動時我們將遇到很大的問題。 系統可能根本無法啟動,這對雲端服務來說往往是非常可悲的。 因此,有必要要么緊急更正最後添加的一行,要么乾脆將其刪除! 這就是為什麼我們沒有手動編寫掛載命令 - 那麼我們就沒有這麼好的機會立即檢查配置。

現在我們實際上安裝了我們想要的一切並打開網路連接埠:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

如果您願意,您也可以在此處放置一個資料庫,但我個人嘗試將其與 Web 伺服器分開。 雖然讓她靠近更快,是的。 虛擬網路適配器的速度通常在千兆左右,當在同一台機器上工作時,通話幾乎立即發生。 但它不太安全。 什麼對誰來說更重要?

現在我們將參數加入設定檔(我們建立一個新的,CentOS的現代想法是這樣的)

echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf

重新啟動伺服器。
在評論中,我因為建議我關閉SeLinux而被罵,所以我會糾正自己並寫下這樣的事實:此後你需要記住配置SeLinux。
其實就是獲利! 🙂

來源: www.habr.com

添加評論