Linux 基礎學習訓練教材 - CentOS 8.x

第 15 堂課:Linux 系統的準備 (Optional)

做一個小型的 Linux 系統來玩玩,自己安裝、自己整理、自己管理等等,測試一下自己真的瞭解 Linux 了嘛?

最近更新時間: 2020/06/22

從學期開始學到這邊之後,如果每堂課後面的習題都有完成的話,那麼你大概已經可以掌握 Linux 作業系統了。 接下來,我們將介紹如何使用最少軟體的功能,來達成你所需要的伺服器環境,注意喔,是『伺服器』環境,而非桌面電腦。 其實重點在安裝時的分割功能、軟體最小安裝、安裝完畢的初始設定、系統的整理與簡易調整,最終就是處理伺服器的各項用途了。 我們還沒有實際操作過伺服器的各項設定,不過這章內容搞定之後,你大概也能夠架設系統預設的 Server 了!

15.1:確認 Linux Server 之操作目的

你需要 Linux 做什麼呢?以鳥哥來說,我的 Linux 大部分都用來做網路伺服器、辦公室防火牆系統、科學計算的基本作業系統、虛擬化的基本系統等等任務。 不同的任務所需要的硬體資源並不相同,同時,所需要提供的服務當然也差異相當大。所以,安裝 Linux 之前,先確認你的用途為宜!

15.1.1:硬體的選購與 Linux 伺服器的用途

雖然說目前 PC 效能強大且便宜,所以 PC 作為 Linux server 的硬體資源應該是毋庸置疑的。不過,某些特別的狀況下, PC 的資源要不是不夠力,就是太過頭了!

舉例來說,現在的物連網 (Internet Of Things) 需要很多的偵測器 (sensors), 但這些偵測器可能需要一部小型 server 來彙整資料與傳輸資料,這個 server 恐怕是需要放在戶外的、比較惡劣的工作環境下! 此時,買一部配備完整的 PC 看起來是效能太好,但是維護不易啊~光是電源怎麼牽到戶外來,就夠傷腦筋的了。 這時,如果一台小小的樹莓派可以處理的話,那應該使用樹莓派會比較好,又省電、又便宜、又方便抽換的維護。

所以,設計你的伺服器主機硬體時,應該要考量實際的需求,這樣才會有較佳的搭配應用。底下鳥哥就自己的常見使用環境給予建議, 請讀者們自行設計出適合自己的主機資源。

  • 需要『高效能運算』的主機系統

某些計算或者是服務需要較高等級的主機系統,此時可能需要購買到多核心伺服器等級的 CPU,搭配高效能網卡 (最好內建 10G 網卡) 會比較適合。以鳥哥為例,鳥哥用來計算空氣品質模式的系統 (2020 年),大多使用雙 CPU 插槽的主機系統,目前最高階那部用了 16 核心 32 執行緒兩顆, 一台會有總和 32 核心 64 執行緒。另一部則使用了單 CPU 的 AMD Ryzen 3990X CPU,這個消費型市場的 CPU 有 64 核心共 128 執行緒! 只是好燙啊~得要使用水冷式散熱才行。

上面這幾部系統都是為了高效能運算的環境所搭配的,一般的環境中,除非要作為虛擬化系統,否則這麼多的 CPU 其實對 Server 一點幫助也沒有! 鳥哥的模式運算時,可以依據 CPU 的個數來進行平行運算,可以具有相當程度的加速效果!因此,CPU 數量越高越好! 鳥哥甚至想要買超貴的 AMD EPYC 伺服器產品,因為他們家的產品在 2020 年時,最多可以達到 64 核心雙 CPU, 這樣一口氣就可以到達 128 顆實體核心,對模式計算來說,相當重要!

如果要做為資料庫環境使用,那也應該要使用比較好的主機資源,因為資料庫的運算通常會消耗很大量的 CPU 資源。 同時,記憶體最好也要大一些,可能的話,將某些資料庫資料寫入記憶體中,會更加速運算。 因此,繁重的資料庫運算也需要較高性能的主機系統。

一般來說,底下的系統需要較高運算效能與較大記憶體容量:

  • 科學計算的 cluster 環境;
  • 讀、寫、查詢相當頻繁的資料庫環境;
  • 提供雲端虛擬化基礎系統的 host 環境;
  • 需要『高磁碟容錯與效能』的主機系統

某些高容量需要的服務,包括檔案伺服器 (如 Samba, FTP, HTTP 等等) 以及科學計算的結果輸出 (例如空品模式、大氣模式等等), 還有雲端虛擬機器的虛擬磁碟等,都會用到很大量的磁碟容量。這時,考量到高速還是高容量,都需要有磁碟容錯的機制存在, 否則機器損壞不打緊,資料不見才煩惱。

實際上線的系統,最好還是使用較高規格的實體磁碟陣列卡來協助比較妥當,除了支援熱拔插的功能,磁碟陣列卡上面的高速快取, 也對讀寫效能有幫助。另外,如果只是資料存放 (如 Samba, FTP, 科學計算的結果輸出) ,建議使用 RAID6 等級來處理即可, 以前鳥哥都用 RAID5,由於同時死掉兩顆磁碟的機率還是存在的,因此現在都傾向於使用 RAID6 較佳

如果是雲端虛擬機所需要的磁碟,由於這些磁碟系統可能需要用在虛擬機的作業上,而不是單純的資料存放, 因此如果能有 SSD 作為進一步快取是最好,若沒有的話,個人建議使用鋸齒狀的 RAID10 效果最好。 例如有八顆磁碟時,兩兩成對做成四個 RAID1 的系統,再將 4 個 RAID1 整合成一組 RAID0,實際使用的經驗, 這樣的讀寫效率會比 RAID5 好些,尤其是在隨機存取的環境上。

此外,在目前 2020 年,市面上有許多容量、效能與使用壽命都還不錯的 SSD 磁碟,因此,使用 SSD 磁碟作為磁碟陣列的子元件也是可行的方案! 不過還是得要注意資料的備份,總之,資料的重要性還是比硬體來的需要注意!

  • 普通效能即可的主機系統

一般的服務,包括 WWW 服務,以及非頻繁讀寫的資料庫環境 (包含在 WWW 系統內),或者是一般小型辦公室的檔案伺服器, 大多使用 CPU 為 4 核 8 緒的 PC 等級產品即可。也就是說,絕大部分的中小企業,需要的就是一部 PC server 啦!

  • 便宜且可抽換的主機系統

以物連網為例,一部樹莓派就可以做很多事情,根本無須使用到 x86 架構的 PC。此外,若單純作為用戶端的接收設備, 樹莓派或其他 Xapple pi 都可以符合這樣的需求。最近學校單位若經費不足,在電腦教室內似乎也能夠透過這種環境, 搭配共用的雲端虛擬系統來組建一整間電腦教室,不但維護較為容易,經費支出應該也會比較節省。

15.1.2:磁碟分割與檔案系統的選擇

不要懷疑,無論你是使用什麼系統,有辦法處理磁碟分割格式為 GPT,就以 GPT 為主!不要再用 MSDOS 的 MBR 模式。 再者,需要做什麼樣的分割,要分割成哪些目錄的掛載,這就與你伺服器的使用有關了。

如果是作為眾多帳號使用的檔案伺服器 (一般中小型企業比較容易使用到的環境),建議 /home 一定要獨自切出來, 此外,若可能的話,將這個 /home 做成 LVM 也是可行的方案 (但是備份方面請自行考量!),這樣檔案系統的縮放才有彈性。 而如果考量到未來可能會放大或縮小,那最好選用 EXT4 檔案系統,因此目前 XFS 並不支援縮小檔案系統的

若有特殊需求需要用在非正規的目錄底下,例如鳥哥經常介紹的 /data 目錄,那麼也請自行製作分割與檔案系統的處置。

針對比較大容量的磁碟或分割,確實建議使用 XFS 檔案系統,格式化會比較快,另外,XFS 在錯誤救援方面也頗為成熟, 對大檔案來說,效能也不錯,是可以考慮使用的檔案系統。

若考慮都使用 CentOS 8 原本提供的服務與預設的目錄配置,則 /var 最好獨自分割出來, 因為很多服務的資料產出都放置於 /var/lib 裡面 (包括資料庫系統),而郵件資料也是放置於 /var/spool/mail 裡面的。

雖然磁碟分割還是依據伺服器的用途而定,不過通常必須要有的分割大致有這些:

  • /
  • /boot
  • /var
  • /home
  • 其他非正規目錄 (例如 /srv 或 /opt 或 /data 等)
  • 多重作業系統的分割與檔案系統考量 (for MSDOS MBR 環境)

以學校的教學環境而言,若在無還原卡的環境下,要達到最大化資源應用,通常會在一個磁碟內進行多個磁碟分割,然後安裝不同的作業系統, 最終以開機選單來進入各個不同的作業系統,此即為多重開機環境的設計依據。

以前 CentOS 6 以前的 Linux 系統,預設使用 EXT3/EXT4 這種 EXT 家族的檔案系統,因此在進行 chainloader 的時候是不會出事的, 因為 CentOS 6 以前的系統,使用的 EXT 檔案系統家族,都會預留出可以安裝開機管理軟體的區塊 (boot sector)。不過新的 XFS 檔案系統並沒有預留! 所以 XFS 檔案系統的 superblock 預留區塊並沒有包含 boot sector 的,因此無法安裝開機管理程式。

因此,針對學校的一機多用途環境而言,若需要安裝 Linux 作業系統與 Windows 作業系統共存的環境,建議 CentOS 的預設檔案系統最好修訂為 EXT4 較佳。 而且較為有趣的是, CentOS 7 以後的系統,因為使用了 XFS 檔案系統,因此開機過程中已經取消自動安裝 boot loader 到 boot sector 的區塊, 只會將 boot loader 安裝到 MBR 區塊而已。所以在安裝完 CentOS 8 之後,可能需要手動安裝 grub2 到 EXT4 的 boot sector 才行。

另外,讀者應該知道安裝作業系統的『順序』是有關系的,因為最後安裝的作業系統之開機管理程式會更新 MBR,因此最終的 MBR 是最後安裝的那個作業系統所管理的。而在教學環境中,Linux 作業系統的開機管理程式可能會被胡亂修改, 因此可能造成無法順利進入其他作業系統的窘境。根據經驗,最好的方式是這樣的:

  1. /dev/sda1, 整個磁碟的最前面 3G 左右的區塊,安裝一套最小的 Linux ,作為選單管理的用途 (這個系統不可刪除)
  2. /dev/sda2, 再安裝 Windows 作業系統
  3. /dev/sda3, 再安裝 Linux 作業系統,且務必選擇 EXT4 檔案系統
  4. /dev/sdaX, 其他共用區塊或其他作業系統 (若為 Linux 還是務必使用 EXT4 檔案系統)

其中,/dev/sda1 那個小 Linux 系統的目的是要維護整個單機系統的開機選單,因此該系統一經安裝就不要在更動他。 而根據上述流程的安排,最終開機選單會被第三個 (也就是最後一個, /dev/sda3) 作業系統所管理。請依據正常流程開機, 然後在純文字界面 (例如 tty2) 用 root 登入系統,之後使用底下的方法將 boot loader 安裝到 boot setor 上面去。

  • grub2-install /dev/sda3 (前提條件,你必須是在 /dev/sda3 這個系統裡面才行!)

若出現錯誤,可加入『--force --recheck --skip-fs-probe』等參數來處理看看。務必記得不要使用 XFS 檔案系統才好。 處理完這部份之後,請拿出 CentOS 的原版光碟,進入本課程之前章節談到的救援模式,然後 chroot 到第一個 /dev/sda1 的作業系統環境,接下來進行救援:

  1. 先修改 /etc/grub.d/40_custom 的設定,增加兩個 chainloader 分別到 /dev/sda2 與 /dev/sda3 兩個系統。
  2. 使用 grub2-install /dev/sda 覆蓋 MBR 的 boot loader

這樣就可以完成整個多重作業系統的環境設定了。

  • 伺服器初始環境的考量

讀者會發現這個小章節中,無論是硬體還是初始環境的設定 (包括分割、檔案系統選擇、掛載資源的設計等等), 全部都與 Server 的用途有關。而無論硬體資源與初始環境設定,幾乎都是一經確認就無法修改 (當然!), 因此,讀者們在學習 Linux 之後,若有架設 Linux server 的需求,應該就您伺服器的用途來考量, 將經費花在刀口上,會比較妥當。

此外,就如同 CentOS 每個版本的支援度都長達 5~7 年之久,你 Server 硬體的使用年限,最好也能夠是 5~7 年以上。 所以,讀者在設計這些硬體資源與初始環境配置時,需要預設考量 5 年內的使用情況,預留升級空間 (包括 LVM 檔案系統、 硬體的記憶體插槽是否有剩餘、磁碟是否能夠後續加掛、額外的插槽是否足夠未來的設備使用等等), 這樣才是較為完整的規劃。

15.2:系統安裝與初始環境設定

一般建議強迫系統用 GPT 分割格式,然後使用最小安裝模式,安裝完畢之後,再以文字模式的方式建立好網路, 持續使用純文字模式進行各項設定工作,初始環境設定完成後,就能夠開始處理你的伺服器架設了。

15.2.1:伺服器的假設前提設定

假設這是一部透過網路芳鄰提供的檔案伺服器,同時提供個人化網頁設置的網頁伺服器,兩者分別使用 Samba 與 httpd 服務。 另外,該伺服器預計提供這些功能:

  • 提供大約 20 ~ 50 人的帳號
  • 每個用戶的使用容量是有受限制的
  • 公司內部還提供一個共用的主網頁功能選單
  • 公司內部也提供一個共用的檔案目錄分享在 /srv 底下

分析上面的資料,我們大概可以知道磁碟分割時,最好能夠分割的目錄應該有哪些?

  • /
  • /boot (一般開機都要有的)
  • /home (針對帳號的用途)
  • /var (針對 /var/www/html 主網頁用途)
  • /srv (針對 Samba 的共用目錄用途)

目前可以使用的虛擬機器硬體資源中,CPU 有兩顆、記憶體僅有 2GB,磁碟也只有 40G 的容量而已,根據這樣的系統,我們大致擬定了這樣的分割:

  • /boot, 實體分割槽, 1GB
  • /, LVM, 10GB
  • /home, LVM, 所有剩餘 VG 的值
  • /var, LVM, 5GB
  • /srv, LVM, 5GB

之所以使用 LVM 是考量到未來的容量擴充之故。至於檔案系統則除了 /boot 使用 ext4 之外,其他通通使用 XFS (因為不是多重作業系統之故)。

15.2.2:安裝程序與注意事項

根據本章節的規劃需求,在整體安裝流程中,讀者比較需要注意的安裝流程項目有底下幾個點:

  • 進入安裝程序之前,強迫系統使用 GPT 分割的功能
  • 磁碟分割一定要選擇自訂分割,並依據上述規劃處理
  • 軟體安裝請勿必選擇最小安裝
  • 強迫使用 GPT 分割方式

要進入安裝模式的話,你需要: (1)將原版光碟放入光碟或 USB 之後,系統重新開機,並選擇光碟開機,如此則會進入安裝模式。 (2)在此安裝模式下會有 60 秒的等待時間,你在時間內請選擇『Install CentOS Linux 8』的選單, (3)按下 [tab] 按鈕後,在出現的更改核心參數畫面中,最後方加入 inst.gpt 的參數即可按下 [enter] 繼續。

圖15.2.2-1、強迫使用 GPT 分割表
圖15.2.2-1、強迫使用 GPT 分割表
  • 其他雜項注意事項

完成 GPT 的強迫使用後,準備進入圖形界面的安裝,我們先選擇語系資料,你可以選擇左側最下方『中文』, 右側的『繁體中文(台灣)』之後,即可按下右下角『繼續』,就可以進入到如下的安裝主畫面:

圖15.2.2-2、圖形界面安裝主畫面環境一覽
圖15.2.2-2、圖形界面安裝主畫面環境一覽

上圖中主要分為三個直行狀態,左側是本地化設定,包括鍵盤、語系與日期,中間是軟體資料的部份,右側則是系統設定。 本地化的設定上,語系支援與日期可能需要重新調整一下,軟體選擇也需要處理一下,還有一些系統設定份也處理一下:

  • 點選『語言支持』之後,左右加上『English』,右側則選擇『English(United States)』項目,如果還要其他的語系支援,請自行挑選。 選擇完畢後按下左上角『完成』即可。
  • 點選『時間和日期』項目,在世界地圖上面點選『台灣』後,上方會自動選擇成為『亞洲/台北』項目,即可按下『完成』。
  • 中間的軟體部份,安裝來源不會改變,那個不理他,下方的『軟體選擇』請點選,然後勾選左側『最小型安裝』那個項目,右側不要選擇任何額外的軟體項目, 之後就按下『完成』即可!這樣的系統可以安裝到最小的容量!
  • 回到安裝主畫面後,觀察最右側的系統項目,由於我們不是核心開發者,所以可以將核心出錯時的錯誤偵測資訊功能關閉,請關閉掉 KDUMP 服務, 點選『KDUMP』按鈕,將『啟用 kdump 』的按鈕取消後,即可按下完成~
  • 磁碟分割注意事項

回到安裝主畫面後,按下『安裝目的地』選項,你會發現有一個 30~40G 左右的磁碟在虛擬機器上,請勾選該磁碟,之後左下方會出現自動配置與自行配置, 請選擇自行配置的項目,最終再按下左上角的完成,即可進入磁碟分割的畫面了。

圖 15.2.2-3、進入使用者自行配置磁碟分割的必要動作
圖 15.2.2-3、進入使用者自行配置磁碟分割的必要動作

依序選擇『標準分割』與『LVM』來建立起 15.2.1 小節所討論的磁碟分割格式。最終磁碟分割完畢應該如下所示:

圖 15.2..2-4、本章節所要求的分割格式
圖 15.2..2-4、本章節所要求的分割格式

若一切都順利處理完畢,則回到安裝主畫面,並且按下『開始安裝』之後,就可以進入安裝的階段了! 在安裝階段時,可以選擇建立 root 密碼以及建立一個平時操作的一般帳號!請務必讓 root 的密碼變得嚴格一點!不要隨便設定! 養成良好的習慣啊!最後很快的安裝完畢,就會出現如下的畫面,等待你重新開機了!

圖 15.2.2-5、最終安裝完畢的示意圖 圖 15.2.2-5、最終安裝完畢的示意圖
圖 15.2.2-5、最終安裝完畢的示意圖

15.2.3:初始化設定-網路、升級機制、防火牆系統、其他設定等

因為我們選擇最小安裝,因此在第一次安裝妥當之後,並不會出現授權畫面!直接就可以使用一般帳號登入系統操作了!相當方便! 此外,讀者會發現,本章特意不在安裝過程中設定好網路,原因是網路的設定還是需要一定的經驗,因此建議還是安裝完畢後再來設定, 印象會比較深刻。

  • 網路環境的設定:

假設這部伺服器所在的環境之網路設定要求如下:

  • IP/Netmask: 172.16.60.XX/16
  • Gateway: 172.16.200.254
  • DNS: 172.16.200.254
  • Hostname: stationXX.book.vbird
  • XX 為你的上課座號尾數,例如 200 號

在你使用一般帳號登入此新安裝的系統,並且 sudo su - 切換成為 root 之後,依舊可以使用 nmcli 指令來完成各項設定。 只是最小安裝預設並沒有安裝 bash-completion,因此無法使用 [tab] 來補齊各項參數,因此你得要自行手動輸入參數才行。

圖 15.2.3-1、網路的設定與觀察
圖 15.2.3-1、網路的設定與觀察

最後也要記得讓系統自動開機就啟動的功能要加上去:

[root@station200 ~]# nmcli connection modify ens3 connection.autoconnect yes
  • 操作習慣的環境重建

本課程大多使用 vim 以及選項會自動補齊的功能,該功能主要透過 vim-enhanced 以及 bash-completion 軟體所提供, 因此讀者可以自行安裝這兩個軟體來恢復自己常用的工作環境。

[root@station200 ~]# yum install vim-enhanced bash-completion
[root@station200 ~]# source /etc/profile.d/bash_completion.sh
[root@station200 ~]# yum install net-tools

此時 vim 立即可以使用了,但如果要在不登出的情況下立即讓 bash-completion 生效,那就得要 source /etc/profile.d/bash_completion.sh 來載入環境才行。不過還是建議可以登出再登入來刷新操作環境較佳。另外,探索網路的工具如 netstat 等,是由 net-tools 所提供的, 所以也得要安裝才好。

  • 升級機制:

安裝好系統的第一個動作,就是升級你的系統!要升級系統最好依據第 12 堂課的建議,選擇最近的 yum server 設定, 這樣軟體安裝速度才會快速。因此請自行處理如下的動作:

  • 修改 /etc/yum.repos.d/CentOS-{AppStream,Base,Extras}.repo 的設定值 (例如以崑山科大為例)
  • 使用 yum clean all
  • 使用 yum -y update 全系統升級
  • 使用 vim /etc/crontab 增加每日凌晨 2:00 自動升級的動作
  • 重新開機一次,因為第一次升級完畢,幾乎一定要重新開機 (因為幾乎 kernel 都有更新過)
  • 關閉服務與設定防火牆

由於我們使用了最小安裝,所以預設有啟動的網路服務相對少很多!不過,近期以來因為主機域名查詢系統變得比較複雜, 因此 CentOS 8 預設幫我們啟用了 systemd-resolvd 這個服務!這個服務可以提供 DNS 的解析。不過,我們目前似乎不太用的到, 所以暫時先予以關閉,等到未來使用到之後,再來處理即可。因此,最終網路服務應該只會剩下 port 22 這個 ssh 而已!

[root@station200 ~]# systemctl stop systemd-resolved.service
[root@station200 ~]# systemctl disable systemd-resolved.service
[root@station200 ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      991/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      991/sshd

由於 CentOS 8 取消了 ntpdate 這個指令的支援,建議我們使用 chronyd 來進行網路校時啦!所以,請依據你的環境來設計好 chrony.conf 檔案, 之後啟動 chronyd 服務吧!只是,這個服務是用戶端的功能,所以防火牆不需要放行 port 123 喔!

[root@station200 ~]# yum install chrony
[root@station200 ~]# vim /etc/chrony.conf
#pool 2.centos.pool.ntp.org iburst
server ntp.ksu.edu.tw iburst

[root@station200 ~]# systemctl start chronyd
[root@station200 ~]# systemctl enable chronyd

sshd 畢竟還是不要對整個 internet 放行會比較好!所以請依據第 11 章介紹的 rich rule 進行設計,讓 ssh 僅放行到 172.16.0.0/16 這個區網即可。 此外,將放行的服務減少到只剩下 http 與 https 即可!其他都不要喔!

[root@station200 ~]# firewall-cmd --permanent --remove-service=cockpit
[root@station200 ~]# firewall-cmd --permanent --remove-service=dhcpv6-client
[root@station200 ~]# firewall-cmd --permanent --remove-service=ssh
[root@station200 ~]# firewall-cmd --permanent --add-service=http
[root@station200 ~]# firewall-cmd --permanent --add-service=https
[root@station200 ~]# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='172.16.0.0/16' service name='ssh' accept"
[root@station200 ~]# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='172.16.0.0/16' service name='samba' accept"
[root@station200 ~]# systemctl restart firewalld.service
[root@station200 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: http https
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="172.16.0.0/16" service name="ssh" accept
        rule family="ipv4" source address="172.16.0.0/16" service name="samba" accept

請讀者不要忘記了,firewall-cmd 的使用上,主要分為立即性與永久的設定值 (--permanent),讀者們必須要將所有的設定寫入設定值才行。

  • 確認分割與檔案系統狀態

最後再來確認一下分割的狀態是否吻合當初設計的情況:

[root@station200 ~]# df -Th -t xfs -t ext4
檔案系統                類型  容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs    10G  1.4G  8.7G   14% /
/dev/mapper/centos-var  xfs   5.0G  263M  4.8G    6% /var
/dev/mapper/centos-home xfs    17G  154M   17G    1% /home
/dev/mapper/centos-srv  xfs   5.0G   68M  5.0G    2% /srv
/dev/vda2               ext4  976M  161M  749M   18% /boot

這應該是沒問題的情況。不過,由於未來用戶的檔案容量是有限制的,因此在 /home 的檔案系統掛載參數中,應該要加入 usrquota 才對。 因此最終使用 mount 去查閱 /home 的資料時,應該要出現如下的情況才對。

[root@station200 ~]# vim /etc/fstab
/dev/mapper/centos-home /home xfs defaults,usrquota,grpquota  0 0

[root@station200 ~]# umount /home
[root@station200 ~]# mount -a

[root@station200 ~]# mount | grep '/home'
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

15.3:簡易伺服器設定與相關環境建置

如前所述,這裡假設你的伺服器為一般企業內部的檔案伺服器及個人化首頁之網頁伺服器,且為多人共用的伺服器系統。 同時因應檔案系統的適當分配,因此會加上磁碟配額的限制。因此這裡就得要有一些帳號建置的相關注意事項才行。

15.3.1:伺服器軟體安裝與設定

本伺服器假設要提供 http 的網路服務,同時提供區網內網芳服務。不過由於網芳 (Samba) 的設定較為複雜, 因此本章主要以 http 網頁伺服器作為簡易的說明。

  • Web service: httpd

Web 服務使用的是 httpd 這隻程式,請安裝,然後啟動即可順利提供服務。

[root@station200 ~]# yum -y install httpd
[root@station200 ~]# systemctl start httpd
[root@station200 ~]# systemctl enable httpd

由於本伺服器並沒有安裝任何的圖形界面,因此無法使用圖形界面的瀏覽器。不過 CentOS 上面有提供多種文字界面瀏覽器, 例如 elinks 就是其中一個頗為知名的文字界面瀏覽器之一。

[root@station200 ~]# yum --enablerepo=PowerTools install elinks

[root@station ~]# yum -y install elinks
[root@station ~]# links http://localhost
圖15.3.1-1、文字界面瀏覽器 links 示意圖
圖15.3.1-1、文字界面瀏覽器 links 示意圖

你可以在 links 的畫面中,按下 [q] 來離開,方向鍵上下為在超連結項目中移動,左右鍵為前一個、後一個頁面, [esc] 可以呼叫 links 選單。

關於 httpd 你應該還需要知道的是:

  • 網頁首頁的目錄位於 /var/www/html/ 底下
  • 首頁的檔名為 index.html
  • 所有的網頁應該放置於 /var/www/html/ 目錄中才行。

假設 student 這個帳號需要管理 http://localhost/student/ 時,最簡單的方法為使用如下的方式建置妥當:

  1. 建立 /var/www/html/student 目錄
  2. 修改上述權限,讓 student 可以讀寫 (可以考慮 chown 即可)
  3. 嘗試幫 student 建立 index.html ,內容只要寫上 "I am student" 即可
  4. 使用 links http://localhost/student 確認是否可以讀取到該頁面即可。
[root@station200 ~]# useradd student
[root@station200 ~]# passwd student
[root@station200 ~]# cd /var/www/html
[root@station200 html]# mkdir student
[root@station200 html]# echo "I am student" > student/index.html
[root@station200 html]# chown -Rv student student
changed ownership of 'student/index.html' from root to student
changed ownership of 'student' from root to student

[root@station200 html]# ll -d student student/*
drwxr-xr-x. 2 student root 24  6月 22 16:06 student
-rw-r--r--. 1 student root 13  6月 22 16:06 student/index.html

[root@station200 html]# links http://localhost/studnet

最終你應該會在 links 的畫面中看到 I am student 的字樣,那就代表成功了。

15.3.2:帳號建置設定

帳號的建置相當的簡單,本訓練教材第 10 堂課已有相當多的範例可以參考。現在本伺服器除了要建置帳號之外,該帳號必須要能擁有 http://localhost/username/ 的網頁子目錄才行。同時,每個帳號在家目錄最多僅能有 200MB 的容量,且超過 180MB 就需要提供警告。 此時,你可以使用底下的腳本來建立好每個用戶,且提供用戶預設的帳密資料,同時強迫用戶第一次使用系統時,需要變更密碼才行。

[root@station200 ~]# vim account.sh
#!/bin/bash
for i in $(seq 1 20)
do
        username="user${i}"
        password="${username}"
        useradd ${username}
        echo ${password} | passwd --stdin ${username}
        chage -d 0 ${username}

        xfs_quota -x -c "limit -u bsoft=180M bhard=200M ${username}" /home

        mkdir /var/www/html/${username}
        echo "I am ${username}" > /var/www/html/${username}/index.html
        chown ${username}:${username} -R /var/www/html/${username}
done

[root@station200 ~]# sh account.sh

同時,在不考慮資安的情境下,將整個使用者的 quota 資訊貼出於 /var/www/html/quota.html 底下, 同時列出目前每個用戶在網頁目錄的磁碟使用量,最簡易的方法可以這樣做:

[root@station200 ~]# (echo "<pre>"; date; xfs_quota -x -c "report -ubh" /home; \
> du -sm /var/www/html/user*; echo "</pre>" ) > /var/www/html/quota.html
[root@station ~]# links http://localhost/quota.html

順利的話,你就能夠看到系統上面每個用戶的資訊使用量。如果需要逐時分析該資訊,請將上面的腳本寫入 /etc/crontab 即可讓系統自行更新。 最後,再考慮備份機制,這部簡易的伺服器就大致在可運作的情境下了。

修改歷史:
  • 2017/06/29:這篇練習主要的目的是讓同學們『真的』自己從頭到尾安裝一部 Linux 出來!裡面還什麼都沒有!
  • 2020/06/22:重新修改成為 CentOS 8 的模樣!是挺有趣的!大家來練習看看吧!
2020/06/22 以來統計人數
計數器
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計