教學課程:在 AL2 023 上安裝LAMP伺服器 - Amazon Linux 2023

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:在 AL2 023 上安裝LAMP伺服器

下列程序可協助您在 AL2 023 執行個體 (有時稱為 Web 伺服器或堆疊SQL) 上安裝 Apache 網路伺服器,以PHP及 MariaDB (我的社群開發的分支) 支援。LAMP LAMP您可以使用此伺服器來託管靜態網站,或部署可讀取和寫入資訊至資料庫的動態PHP應用程式。

重要

這些程序旨在與 AL2 023 搭配使用。如果您嘗試在不同的發行版(例如 Ubuntu 或 RHEL)上設置 LAMP Web 服務器,本教程將無法正常工作。如需 Ubuntu,請參閱下列 Ubuntu 社群說明文ApacheMySQLPHP件:若是其他發行版,請參閱其特定文件。

步驟 1:準備伺LAMP服器

必要條件
  • 本教學課程假設您已使用 AL2 023 啟動新執行個體,並具有可從網際網路存取的公用DNS名稱。如需詳細資訊,請參閱AL2023 在 Amazon 網站上 EC2。您也必須將安全性群組設定為允許 SSH (連接埠 22)、HTTP (連接埠 80) 和 HTTPS (連接埠 443) 連線。如需這些先決條件的詳細資訊,請參閱 Amazon EC2 使用者指南的授權 Linux 執行個體的入站流量

  • 下列程序會安裝 AL2 023 (目前為 8.1) 上可用的最新PHP版本。如果您打算使用本教程中描述的應用程PHP序以外的應用程序,則應檢查它們與 8.1 的兼容性。

準備LAMP伺服器
  1. 連線到您的執行個體。如需詳細資訊,請參閱連線至 AL2 023 個執行個體

  2. 為確保所有軟體套件皆為最新版本,請對您的執行個體執行快速軟體更新。本程序可能需費時幾分鐘,但確定您擁有最新的安全更新和錯誤修正至關重要。

    -y 選項不要求確認就會安裝更新。如果您要先檢查更新再安裝,則可以略過此選項。

    [ec2-user ~]$ sudo dnf upgrade -y
  3. 安裝最新版本的 Apache 網頁伺服器以及適用於 AL2 023 的PHP套件。

    [ec2-user ~]$ sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
  4. 安裝 MariaDB 軟體套件。使用 dnf install 命令可以同時安裝多個軟體套件和所有相關的依存項目。

    [ec2-user ~]$ sudo dnf install mariadb105-server

    您可以使用下列命令來檢視這些套件的目前版本:

    [ec2-user ~]$ sudo dnf info package_name

    範例:

    [root@ip-172-31-25-170 ec2-user]# dnf info mariadb105 Last metadata expiration check: 0:00:16 ago on Tue Feb 14 21:35:13 2023. Installed Packages Name : mariadb105 Epoch : 3 Version : 10.5.16 Release : 1.amzn2023.0.6 Architecture : x86_64 Size : 18 M Source : mariadb105-10.5.16-1.amzn2023.0.6.src.rpm Repository : @System From repo : amazonlinux Summary : A very fast and robust SQL database server URL : http://mariadb.org License : GPLv2 and LGPLv2 Description : MariaDB is a community developed fork from MySQL - a multi-user, multi-threaded : SQL database server. It is a client/server implementation consisting of : a server daemon (mariadbd) and many different client programs and libraries. : The base package contains the standard MariaDB/MySQL client programs and : utilities.
  5. 啟動 Apache Web 伺服器。

    [ec2-user ~]$ sudo systemctl start httpd
  6. 使用 systemctl 命令來設定 Apache Web 伺服器在每次系統開機時啟動。

    [ec2-user ~]$ sudo systemctl enable httpd

    要確認 httpd 已啟用,您可以執行以下命令:

    [ec2-user ~]$ sudo systemctl is-enabled httpd
  7. 新增安全性規則,以允許執行個體的輸入 HTTP (連接埠 80) 連線 (如果您尚未這麼做)。默認情況下,啟動嚮導-N安全群組是在啟動期間為您的執行個體建立的。如果您未新增其他安全性群組規則,則此群組僅包含允許SSH連線的單一規則。

    1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

    2. 在左側的導覽窗格中,選取 Instances (執行個體),然後選取您的執行個體。

    3. Security ( 安全性) 標籤上,檢視對內規則。您應該會看到下列規則:

      Port range Protocol Source 22 tcp 0.0.0.0/0
      警告

      使用0.0.0.0/0允許所有IPv4地址使用訪問您的實例SSH。通常在測試環境中短暫進行此作業是沒有問題的,但用在生產環境則不安全。在生產環境中,您應只授權特定 IP 地址或特定範圍的地址存取您的執行個體。

    4. 如果沒有允許 HTTP (連接埠 80) 連線的輸入規則,您現在必須新增規則。選擇安全群組的連結。使用請參閱授權 Linux 執行個體的入站流量中的程序,新增具有下列值的新輸入安全性規則:

      • 類型:HTTP

      • 通訊協定:TCP

      • Port Range (連接埠範圍):80

      • Source (來源):自訂

  8. 測試您的 Web 伺服器。在網頁瀏覽器中,輸入執行個體的公用位DNS址 (或公用 IP 位址)。如果 /var/www/html 中沒有內容,則您應該會看到 Apache 測試頁,其會顯示 "It works!" (成功了!) 訊息。

    您可以使用 Amazon EC2 主控台將執行個體公DNS開 (查看「開 IPv4DNS」欄;如果隱藏此欄,請選擇「偏好設定」(齒輪形圖示),然後開啟「開」IPv4DNS)。

    確認執行個體的安全性群組包含允許HTTP通訊埠 80 上流量的規則。如需詳細資訊,請參閱將規則新增至安全性群組

    重要

    如果您未使用 Amazon Linux,則可能也需要在您的執行個體上設定防火牆以允許這些連線。如需如何設定防火牆的詳細資訊,請參閱針對您特定散發的文件。

Apache httpd 提供保存在稱為 Apache 文件根目錄中的檔案。Amazon Linux Apache 文件根目錄是 /var/www/html,預設情況下由根擁有。

若要允許 ec2-user 帳戶操作此目錄中的檔案,您必須修改目錄的所有權和許可。有多種方法可以達成這件任務。在本教學中,您會將 ec2-user 新增至 apache 群組以向 apache 群組授予 /var/www 目錄的所有權,並指派寫入許可。

設定檔案許可
  1. 將您的使用者 (在此案例中為 ec2-user) 新增至 apache 群組。

    [ec2-user ~]$ sudo usermod -a -G apache ec2-user
  2. 登出並重新登入,以取得新的群組並驗證您的成員資格。

    1. 登出 (使用 exit 命令或關閉終端機視窗):

      [ec2-user ~]$ exit
    2. 若要在 apache 群組中驗證您的會員資格,請重新連線至您的執行個體,然後執行下列命令:

      [ec2-user ~]$ groups ec2-user adm wheel apache systemd-journal
  3. /var/www 的群組所有權及其內容變更為 apache 群組。

    [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
  4. 若要新增群組寫入許可並在將來的子目錄上設定群組 ID,請變更 /var/www 及其子目錄的目錄許可。

    [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
  5. 若要新增群組寫入許可,請以遞迴方式變更 /var/www 及其子目錄的檔案許可:

    [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;

現在,ec2-user(以及該apache群組的任何 future 成員) 可以在 Apache 文件根目錄中新增、刪除和編輯檔案,讓您能夠新增內容,例如靜態網站或PHP應用程式。

保護您的 Web 伺服器 (選擇性)

執行通HTTP訊協定的 Web 伺服器不會為傳送或接收的資料提供傳輸安全性。當您使用網頁瀏覽器連接到HTTP伺服器時,您所造訪URLs的網頁、您收到的網頁內容,以及您提交的任何HTML表單的內容 (包括密碼),都可以在網路途徑上的任何地方看到竊聽者。保護您的 Web 服務器的最佳做法是安裝支持HTTPS(安HTTP全),該支持使用SSL/TLS加密保護您的數據。

如需有關在伺服器HTTPS上啟用的資訊,請參閱教學課程:在 AL2023 上設定 SSL/TLS

步驟 2:測試您的LAMP伺服器

如果您的伺服器已安裝並執行,且您的檔案權限設定正確,您的ec2-user帳戶應該能夠在可從網際網路存取的/var/www/html目錄中建立PHP檔案。

若要測試您的LAMP伺服器
  1. 在 Apache 文PHP檔根目錄中創建一個文件。

    [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

    如果您嘗試執行此命令時出現拒絕許可錯誤,請嘗試登出並重新登入,以取得您在 設定檔案許可 設定的適當群組許可。

  2. 在網頁瀏覽器中,輸入您剛建立URL的檔案。這URL是執行個體的公用DNS位址,後面接著正斜線和檔案名稱。例如:

    http://my.public.dns.amazonaws.com/phpinfo.php

    您應該會看到以下PHP資訊頁面:

    LAMP伺服器測試會顯示PHP資訊頁面。

    如果你未看見此頁面,請確認 /var/www/html/phpinfo.php 檔案在前述步驟中正確建立。您也可以使用下列命令來確認已安裝所有必要的套件。

    [ec2-user ~]$ sudo dnf list installed httpd mariadb-server php-mysqlnd

    如果您的輸出未列出所需之任何套件,請使用 sudo yum install package 命令來安裝。

  3. 刪除 phpinfo.php 檔案。雖然這可能是有用的資訊,但基於安全因素,您不應將其廣播至網際網路。

    [ec2-user ~]$ rm /var/www/html/phpinfo.php

您現在應該擁有一個功能齊全的 LAMP Web 服務器。如果您將內容新增至 Apache 文件根目錄/var/www/html,您應該可以在執行個體的公開DNS位址檢視該內容。

步驟 3:保護資料庫伺服器

MariaDB 伺服器的預設安裝有幾項非常適合測試和開發的功能,但針對生產伺服器應將其停用或移除。mysql_secure_installation 命令將引導您完成設定根目錄密碼並從安裝中移除不安全功能的程序。即使您不打算使用 MariaDB 伺服器,我們也建議您執行此程序。

保護 MariaDB 伺服器
  1. 啟動 MariaDB 伺服器。

    [ec2-user ~]$ sudo systemctl start mariadb
  2. 執行 mysql_secure_installation

    [ec2-user ~]$ sudo mysql_secure_installation
    1. 請在系統提示時,輸入根帳戶的密碼。

      1. 輸入目前的根密碼。根據預設,根帳戶並未設定密碼。按 Enter。

      2. 輸入 Y 來設定密碼,然後輸入兩次安全密碼。如需建立安全密碼的詳細資訊,請參閱https://identitysafe.norton.com/password-generator/。請確保此密碼存放於安全處。

        為 MariaDB 設定根密碼僅是確保資料庫安全的最基本措施。在建置或安裝資料庫驅動的應用程式時,通常會為該應用程式建立資料庫服務使用者,並避免使用根帳戶進行資料庫管理以外的任何作業。

    2. 輸入 Y 來移除匿名使用者帳戶。

    3. 輸入 Y 來停用遠端根登入。

    4. 輸入 Y 來移除測試資料庫。

    5. 輸入 Y 來載入使用者權限資料表並儲存您的變更。

  3. (選用) 如果您不打算立即使用 MariaDB 伺服器,請將其停止。再次需要時,您可以將其重啟。

    [ec2-user ~]$ sudo systemctl stop mariadb
  4. (選用) 如果您希望 MariaDB 伺服器在每次系統開機時啟動,請輸入下列命令。

    [ec2-user ~]$ sudo systemctl enable mariadb

步驟 4:(可選)安裝 phpMyAdmin

phpMyAdmin是一個基於 Web 的數據庫管理工具,可用於查看和編輯EC2實例上的 My 數據SQL庫。請遵循下列步驟在您的 Amazon Linux 執行個體上安裝並設定 phpMyAdmin

重要

除非您TLS在 Apache 中啟用SSL/,否則我們不建議使用phpMyAdmin來存取LAMP伺服器;否則,您的資料庫管理員密碼和其他資料會以不安全的方式透過網際網路傳輸。如需開發人員提供的安全性建議,請參閱保護您的 phpMyAdmin 安裝。EC2如需有關在執行個體上保護 Web 伺服器的一般資訊,請參閱教學課程:在 AL2023 上設定 SSL/TLS

若要安裝 phpMyAdmin
  1. 安裝所需的依存項目。

    [ec2-user ~]$ sudo dnf install php-mbstring php-xml -y
  2. 重新啟動 Apache。

    [ec2-user ~]$ sudo systemctl restart httpd
  3. 重新啟動 php-fpm

    [ec2-user ~]$ sudo systemctl restart php-fpm
  4. /var/www/html 中導覽至 Apache 文件根。

    [ec2-user ~]$ cd /var/www/html
  5. 請從 https://www.phpmyadmin.net/downloads 中選取最新 phpMyAdmin 發行版本的原始碼套件。若要直接將檔案下載到您的執行個體,請複製連結並將其貼入 wget 命令,如下所示:

    [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
  6. 以下列命令建立 phpMyAdmin 資料夾,並將套件擷取至該資料夾中。

    [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
  7. 刪除 phpMyAdmin-latest-all-languages.tar.gz 壓縮包。

    [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
  8. (選擇性) 如果「我的SQL伺服器」未執行,請立即啟動。

    [ec2-user ~]$ sudo systemctl start mariadb
  9. 在網頁瀏覽器中,輸入您URL的 phpMyAdmin 安裝。這URL是執行個體的公用位DNS址 (或公用 IP 位址),後面接著正斜線和安裝目錄的名稱。例如:

    http://my.public.dns.amazonaws.com/phpMyAdmin

    您應該會看到 phpMyAdmin 登入頁面:

    輸入 phpMyAdmin 安裝URL的結果是 phpMyAdmin 登錄屏幕。
  10. 使用您之前建立的root使用者名稱和 My SQL root 密碼登入您的 phpMyAdmin 安裝。

    必須先設定您的安裝,才能將其投入使用。我們建議您從手動建立組態檔案開始,如下所示:

    1. 若要從最小的組態檔開始,請使用您最愛的文字編輯器建立新檔案,然後將 config.sample.inc.php 的內容複製到其中。

    2. 將檔案另存為config.inc.php在包含的 phpMyAdmin 目錄中index.php

    3. 如需任何其他設定,請參閱安裝指示的「使用 phpMyAdmin 安裝程式指令集」一節中的檔案後建立指示。

    若要取得有關使用的資訊 phpMyAdmin,請參閱phpMyAdmin 使用指南

疑難排解

本節提供解決您在設定新LAMP伺服器時可能遇到的常見問題的建議。

我無法使用 Web 瀏覽器連線至我的伺服器

請執行下列檢查以查看您的 Apache Web 伺服器是否正在執行且可存取。

  • Web 伺服器是否正在執行?

    要確認 httpd 已啟用,您可以執行以下命令:

    [ec2-user ~]$ sudo systemctl is-enabled httpd

    如果 httpd 程序未執行,請重複 準備LAMP伺服器 所述的步驟。

  • 防火牆是否設定正確?

    確認執行個體的安全性群組包含允許HTTP通訊埠 80 上流量的規則。如需詳細資訊,請參閱將規則新增至安全性群組

我無法使用連接到我的服務器 HTTPS

請執行下列檢查,查看您的 Apache 網頁伺服器是否設定為支援HTTPS。

  • Web 伺服器是否正確設定?

    安裝 Apache 之後,伺服器就會設定為HTTP流量。若要支援HTTPS,請在伺服器TLS上啟用並安裝SSL憑證。如需相關資訊,請參閱 教學課程:在 AL2023 上設定 SSL/TLS

  • 防火牆是否設定正確?

    確認執行個體的安全性群組包含允許連接埠 443 HTTPS 流量的規則。如需詳細資訊,請參閱授權 Linux 執行個體的入站流量

相關主題

如需有關將檔案傳輸至執行個體或在 Web 伺服器上安裝 WordPress 部落格的詳細資訊,請參閱下列文件:

如需本教學所使用的命令和軟體之詳細資訊,請參閱下列網頁:

如需為您的 Web 伺服器註冊網域名稱或將現有網域名稱轉移至此主機的詳細資訊,請參閱Amazon Route 53 開發人員指南中的建立和遷移網域和子網域至 Amazon Route 53