返回部落格

在 Ubuntu 20.04 上使用 Ansible 安裝與設定 LAMP

在 Ubuntu 20.04 上使用 Ansible 安裝與設定 LAMP

伺服器自動化是一種安全且可靠的程序,能以有效且具科技感的方式管理和監控伺服器。與由專門專家團隊控制的資料中心管理伺服器的傳統方式不同,所有伺服器都使用自動化進行管理。因此,人為錯誤被降至最低。

組態管理工具如 Ansible, Puppet, Terraform等(僅舉幾例),通常用於自動化伺服器。這些工具透過為新伺服器建立標準程序來使用自動化設定伺服器,同時消除手動操作時可能發生的錯誤。

Ansible 是一個強大的開源專案。它具有彈性、易於使用,且擁有最簡化的架構。使用 Ansible playbook 不需要任何程式設計背景,而且不需要在節點上安裝軟體。最重要的是,它配備了出色的功能,可以編寫指令碼並簡化自動化流程。

在本指南中,我們將 引導您完成在 Ubuntu 20.04 上使用 Ansible 安裝和設定 LAMP 的步驟.

先決條件

若要跟隨本教學,您需要:

Ansible Playbook 的用途是什麼?

此 Ansible playbook 是執行我們指南中所述步驟的另一種方式:LAMP 堆疊設定 Linux Apache MySQL PHP.

執行 Ansible playbook 將在您的 Ansible 主機上執行以下操作:

  • 安裝 aptitude,這是 Ansible 偏好的 apt 套件管理員替代方案。

  • 安裝所有必要的 LAMP 套件。

  • 建立一個新的 Apache VirtualHost 並設定專用的文件根目錄。

  • 啟用(ON) 新的 VirtualHost.

  • 停用(OFF) 預設的 Apache 網站,即將 disable_default 變數設定為 true.

  • 為 MySQL root 使用者選擇密碼。

  • 移除匿名 MySQL 帳戶和測試資料庫。

  • 設定 UFW 以允許所設定連接埠上的 HTTP 流量,預設為 80.

  • 設定 PHP 測試指令碼。

在 Ansible playbook 執行完成後,您將會看到一個根據我們所做設定在 Apache 上執行的網頁 PHP 環境。

使用 Ansible Playbook

首先,從 do-community/ansible-playbooks 儲存庫取得 LAMP playbook 及其相依性。接下來,將含有 LAMP playbook 的儲存庫複製到 Ansible 控制節點內部的本機資料夾中。

執行 git pull 指令,以確保您能存取我們在本教學中將要使用的正確內容:

如果您是第一次使用 do-community/ansible-playbooks 儲存庫,請考慮將該儲存庫複製到您的家目錄:

前往 lamp_ubuntu2004 資料夾,您將會看到以下結構:

以下是這些檔案代表意義的概覽:

  • files/info.php.j2:這是一個範本檔案,您可以在其中於網頁伺服器的根目錄設定 PHP 測試頁面。

  • files/apache.conf.j2:另一個用於設定 Apache VirtualHost 的範本檔案。

  • vars/default.yml:這是一個用來自訂 playbook 設定的變數檔案。

  • playbook.yml:此檔案包含要在遠端伺服器上執行的所有任務內容。

  • readme.md:包含此 playbook 資訊的讀取檔案。

讓我們透過修改 playbook 的變數檔案來自訂 MySQL 和 Apache 設定。導覽至 lamp_ubuntu2004 目錄並開啟 vars/default.yml 檔案,使用 nano 編輯器:

開啟 vars/default.yml 檔案後,將會看到需要修改的變數列表:

讓我們詳細了解每個變數:

  • mysql_root_password:儲存 root MySQL 帳戶的密碼。

  • app_user:這是 Ansible 主機上的遠端非 root 使用者,作為應用程式檔案的擁有者。

  • http_host:顯示您的網域名稱。

  • http_conf:顯示在 Apache 中建立的設定檔名稱。

  • http_port:這是此虛擬主機的 HTTP 連接埠,而 80 是預設值。

  • disable_default:用於取消 Apache 隨附的預設選項。

然後,儲存並關閉 vars/default.yml 檔案。

完成所有設定後,我們就可以在伺服器上執行此 playbook 了。預設情況下,playbook 中的大多數伺服器都設定為在清單中的每台伺服器上執行。讓我們使用 -l 旗標,以僅影響受 playbook 影響的單一伺服器或選定的群組子集。或者,我們可以使用 -u 旗標,以詳細檢視正在連接哪台遠端伺服器並在遠端主機上執行。

讓我們在一部伺服器 server1 上執行,並以使用者 justin:

您將獲得類似以下的輸出:

當您看到 playbook 執行完成後,請導覽至您的網頁瀏覽器並存取伺服器的主機。別忘了在 IP 的末尾加上 /info.php

點擊此 URL 後,您將看到如下頁面:

警告: 顯示的頁面包含關於您 PHP 環境的敏感資訊。因此,建議使用以下命令從伺服器中移除您的個人資訊:

rm -f /var/www/info.php

Playbook 中有什麼?

接下來,讓我們了解在 中所使用檔案的意義與重要性ansible-playbook 內容:

  • vars/default.yml

default.yml 變數檔案包含 MySQL root 帳號的網域名稱和密碼。這些是 中使用的預設值ansible-playbook 任務:

  • files/apache.conf.j2

apache.conf.j2 檔案是一個 Jinja 2 範本檔案,用於設定新的 Apache VirtualHost。此範本中使用的變數必須在 中定義vars/default.yml 變數檔案:

  • files/info.php.j2

類似於 files/apache.conf.j2info.php.j2 檔案也是一個 Jinja 範本。我們使用此檔案在全新設定的 LAMP 伺服器的文件根目錄中建立一個測試 PHP 指令碼:

  • playbook.yml

playbook.yml 檔案是定義此設定中所有任務的地方。在此檔案中,設定了所有的 LAMP 堆疊。它首先定義目標伺服器群組,並將其設定為 all。此外,它將 become 值設為 true ( become: true),並定義所有需要執行的任務。接下來, yaml 檔案包含預設檔案,即 vars/default.yml 變數檔案,以載入設定選項:

您可以根據專案的需求和要求修改這些檔案。

結論

在本教學中,我們介紹了使用 Ansible 在遠端伺服器上安裝和設定 LAMP 的步驟。您還可以嘗試許多其他自訂選項。例如,使用 Ansible 官方文件 並使用 mysql_user 模組的案例是提升技能的絕佳方式。此外,請按照本指南中討論的步驟,使用其他組態管理工具和作業系統來練習自動化,以增加難度。

您是 LAMP 架構的新手並想深入探討此主題嗎?歡迎探索我們 部落格上的以下教學:

祝您使用愉快!

author

Hark Labs

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。