教程:在 AL2 023 上託管 WordPress 博客 - Amazon Linux 2023

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

教程:在 AL2 023 上託管 WordPress 博客

下列程序可協助您在 AL2 023 執行個體上安裝、設定和保護 WordPress 部落格。本教程是使用 Amazon 的一個很好EC2的介紹,因為您可以完全控制託管 WordPress 博客的 Web 服務器,這對於傳統託管服務來說並不典型。

您需負責為伺服器更新軟體套件及維護安全性修補程式。對於不需要直接與 Web 伺服器組態互動的更自動化 WordPress 安裝,此 AWS CloudFormation 服務會提供一個 WordPress範本,讓您快速開始使用。如需詳細資訊,請參閱 AWS CloudFormation 使用者指南中的入門如果您需要具有解耦資料庫的高可用性解決方案,請參閱開發人員指AWS Elastic Beanstalk 南中的部署高可用性 WordPress 網站

重要

這些程序適用於 AL2 023。如需其他分發的詳細資訊,請參閱其特定文件。本教學課程中的許多步驟不適用於 Ubuntu 執行個體。如需在 Ubuntu 執行個體 WordPress 上安裝的說明,請參閱 Ubuntu 文件WordPress中的。您也可以使CodeDeploy用在 Amazon Linux,macOS 或 Unix 系統上完成此任務。

必要條件

強烈建議您將彈性 IP 位址 (EIP) 與用來託管 WordPress 部落格的執行個體建立關聯。這樣可以防止執行個體的公共DNS位址變更和中斷安裝。如果您擁有網域名稱,並且想要將該網域名稱用於部落格,您可以將網域名稱的DNS記錄更新為指向您的EIP地址 (如需相關協助,請聯絡您的網域名稱註冊商)。您可以免費將一個EIP位址與執行中的執行個體相關聯。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的彈性 IP 地址教學課程:在 AL2 023 上安裝LAMP伺服器 教學課程亦提供設定安全群組以允許 HTTPHTTPS 流量的步驟,還有多個步驟可確保您的 web 伺服器已設定正確的檔案許可權限。如需將規則新增至安全性群組的相關資訊,請參閱將規則新增至安全性群組

如果您的部落格還沒有網域名稱,可以向 Route 53 註冊網域名稱,並將執行個體的EIP位址與網域名稱建立關聯。如需詳細資訊,請參閱《Amazon Route 53 開發人員指南》中的使用 Amazon Route 53 註冊網域名稱

安裝 WordPress

Connect 至您的執行個體,然後下載 WordPress 安裝套件。如需連線至執行個體的詳細資訊,請參閱連線至 AL2023 執行個體

  1. 使用下列命令,下載並安裝這些套件。

    dnf install wget php-mysqlnd httpd php-fpm php-mysqli mariadb105-server php-json php php-devel -y
  2. 您可能會注意到輸出中顯示帶有類似措辭的警告 (版本可能會隨時間而有所變化):

    WARNING: A newer release of "Amazon Linux" is available. Available Versions: dnf upgrade --releasever=2023.0.20230202 Release notes: https://aws.amazon.com Version 2023.0.20230204: Run the following command to update to 2023.0.20230204: dnf upgrade --releasever=2023.0.20230204 ... etc

    最佳作法是我們建議 up-to-date 盡可能保留作業系統,但是您可能想要逐一查看每個版本,以確保您的環境中沒有衝突。若步驟 1 中記下的先前套件安裝失敗,您可能需要更新至所列出較新版本的其中一個,然後再試一次

  3. 使用wget指令下載最新的 WordPress 安裝套件。以下命令將一律下載最新版本。

    [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
  4. 解壓縮並解除封存安裝套件。安裝資料夾將解壓縮到名為 wordpress 的資料夾。

    [ec2-user ~]$ tar -xzf latest.tar.gz
若要建立 WordPress 安裝的資料庫使用者和資料庫

您的 WordPress 安裝需要將資訊 (例如部落格貼文和使用者註解) 儲存在資料庫中。此程序協助您建立部落格的資料庫,以及有權在該資料庫中讀取和儲存資訊的使用者。

  1. 啟動資料庫和 Web 伺服器。

    [ec2-user ~]$ sudo systemctl start mariadb httpd
  2. root 使用者的身分登入資料庫伺服器。出現提示時,輸入您資料庫的 root 密碼;此密碼可能不同於您的 root 系統密碼,假如您尚未設定資料庫伺服器的密碼,此密碼可能為空白。

    如果您尚未建立資料庫伺服器的保護機制,請務必這麼做。如需詳細資訊,請參閱 步驟 3:保護資料庫伺服器 (AL2023)。

    [ec2-user ~]$ mysql -u root -p
  3. 為 [我的SQL資料庫] 建立使用者和密碼。您的 WordPress安裝會使用這些值與「我的SQL資料庫」進行通訊。請輸入下列命令,並換成唯一的使用者名稱與密碼。

    CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';

    務必為使用者建立高強度密碼。請勿在密碼中使用單引號字元 ( ' ),因為這會使上述命令中斷。請勿重複使用現有密碼,並將此密碼存放在安全的地方。

  4. 建立資料庫。為資料庫提供一個描述性有意義的名稱,例如 wordpress-db

    注意

    以下命令中資料庫名稱前後的標點符號稱為反引號。標準鍵盤上的反引號 (`) 鍵通常位在 Tab 鍵上方。反引號不一定為必要,但反引號可讓您在資料庫名稱中使用其他的非法字元,例如連字號。

    CREATE DATABASE `wordpress-db`;
  5. 將資料庫的完整權限授與您之前建立的 WordPress 使用者。

    GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
  6. 排清資料庫權限,以套用所有變更。

    FLUSH PRIVILEGES;
  7. 離開 mysql 用戶端。

    exit
建立及編輯 wp-config.php 檔案

WordPress 安裝資料夾包含一個名為的範例規劃檔wp-config-sample.php。在此程序中您將複製該檔案,並依照您的特定組態編輯檔案。

  1. wp-config-sample.php 檔案複製到稱為 wp-config.php 的檔案。此動作將建立一個新的組態檔案,並保留原本的範例檔案做為備份。

    [ec2-user ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
  2. 用您喜愛的文字編輯器 (例如 wp-config.phpnano) 編輯 vim 檔案,並輸入您的安裝值。如果您沒有喜愛的文字編輯器,nano 很適合入門者。

    [ec2-user ~]$ nano wordpress/wp-config.php
    1. 找出定義 DB_NAME 的行,並將 database_name_here 變更為您在步驟 4若要建立 WordPress 安裝的資料庫使用者和資料庫中建立的資料庫名稱。

      define('DB_NAME', 'wordpress-db');
    2. 找出定義 DB_USER 的行,並將 username_here 變更為您在步驟 3若要建立 WordPress 安裝的資料庫使用者和資料庫中建立的資料庫使用者。

      define('DB_USER', 'wordpress-user');
    3. 找出定義 DB_PASSWORD 的行,並將 password_here 變更為您在步驟 3若要建立 WordPress 安裝的資料庫使用者和資料庫中建立的高強度密碼。

      define('DB_PASSWORD', 'your_strong_password');
    4. 找出稱為 Authentication Unique Keys and Salts 的區段。這些SALTKEY和值為 WordPress 使用者儲存在其本機電腦上的瀏覽器 Cookie 提供了一層加密。基本上,於此新增長的隨機值將使您的網站更安全。請前往 https://api.wordpress.org/secret-key/1.1/salt/ 隨機產生一組金鑰值,您可將其複製並貼入到 wp-config.php 檔案內。要將文本粘貼到 Pu TTY 終端中,請將光標放在要粘貼文本的位置,然後在 Pu TTY 終端中右鍵單擊鼠標。

      如需有關安全金鑰的詳細資訊,請前往 https://wordpress.org/support/article/editing-wp-config-php/#security-金鑰

      注意

      下列值僅供範例使用;請勿使用這些值進行安裝。

      define('AUTH_KEY', ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-'); define('SECURE_AUTH_KEY', 'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg'); define('LOGGED_IN_KEY', 'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3'); define('NONCE_KEY', 'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj'); define('AUTH_SALT', 'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h'); define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv'); define('LOGGED_IN_SALT', ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/'); define('NONCE_SALT', '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
    5. 儲存檔案並結束您的文字編輯器。

若要在 Apache 文件根目錄下安裝您的 WordPress 檔案
  • 現在您已解壓縮安裝資料夾、建立 [我的資SQL料庫和使用者],以及自訂 WordPress 組態檔案,您已準備好將安裝檔案複製到 Web 伺服器文件根目錄,以便執行完成安裝的安裝指令碼。這些文件的位置取決於您是否希望您的 WordPress 博客在 Web 服務器的實際根目錄(例如,my.public.dns.amazonaws.com)或根目錄下的子目錄或文件夾中(例如,my.public.dns.amazonaws.com/blog)。

    • 如果 WordPress 要在文檔根目錄下運行,請複製 wordpress 安裝目錄的內容(但不是目錄本身),如下所示:

      [ec2-user ~]$ cp -r wordpress/* /var/www/html/
    • 如果您想 WordPress 要在文件根目錄下的替代目錄中執行,請先建立該目錄,然後將檔案複製到該目錄中。在這個例子中, WordPress將從目錄中運行blog

      [ec2-user ~]$ mkdir /var/www/html/blog [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/
重要

基於安全起見,如果您不是要立即移至下一個步驟,現在請先停止 Apache web 伺服器 (httpd)。在您將安裝移到 Apache 文件根目錄下之後, WordPress 安裝指令碼不受保護,如果 Apache Web 伺服器正在執行,攻擊者可能會取得您部落格的存取權。若要停止 Apache Web 伺服器,輸入命令 sudo service httpd stop。如果您要移至下一個步驟,則不需要停止 Apache web 伺服器。

允許使 WordPress 用永久鏈接

WordPress 永久連結必須使用 Apache .htaccess 檔案才能正常運作,但在 Amazon Linux 上預設不會啟用此功能。請使用此程序允許 Apache 文件根下的所有覆寫。

  1. 使用您喜愛的文字編輯器 (例如 httpd.confnano) 開啟 vim 檔案。如果您沒有喜愛的文字編輯器,nano 很適合入門者。

    [ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf
  2. 找出開頭為 <Directory "/var/www/html"> 的區段。

    <Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
  3. 變更上述區段中的 AllowOverride None 行,以讀取 AllowOverride All

    注意

    此檔案中有多個 AllowOverride 行;請確定您變更的是 <Directory "/var/www/html"> 區段中的行。

    AllowOverride All
  4. 儲存檔案並結束您的文字編輯器。

在 AL2 023 上安裝圖PHP形圖面資源庫的步驟

的 GD 程式庫PHP可讓您修改影像。如果您需要裁剪部落格的標題映像,請安裝此程式庫。您安裝 phpMyAdmin 的版本可能需要此程式庫的特定最低版本 (例如 8.1 版)。

使用以下命令在 AL2 023 上安裝圖PHP形圖庫。例如,如果您在安裝LAMP堆疊時從來源安裝 php8.1,則此指令會安裝圖PHP形圖面資源庫的 8.1 版。

[ec2-user ~]$ sudo dnf install php-gd

若要確認已安裝的版本,請使用下列命令:

[ec2-user ~]$ sudo dnf list installed | grep php-gd

下列為範例輸出:

php-gd.x86_64 8.1.30-1.amzn2 @amazonlinux
在 Amazon Linux 上安裝圖PHP形繪圖庫 AMI

的 GD 程式庫PHP可讓您修改影像。如果您需要裁剪部落格的標題映像,請安裝此程式庫。您安裝 phpMyAdmin 的版本可能需要此程式庫的特定最低版本 (例如 8.1 版)。

若要確認哪些版本可用,請使用下列命令:

[ec2-user ~]$ dnf list | grep php

以下是來自圖PHP形工程圖庫 (8.1 版) 輸出的範例行:

php8.1.aarch64 8.1.7-1.amzn2023.0.1 @amazonlinux php8.1-cli.aarch64 8.1.7-1.amzn2023.0.1 @amazonlinux php8.1-common.aarch64 8.1.7-1.amzn2023.0.1 @amazonlinux php8.1-devel.aarch64 8.1.7-1.amzn2023.0.1 @amazonlinux php8.1-fpm.aarch64 8.1.7-1.amzn2023.0.1 @amazonlinux php8.1-gd.aarch64 8.1.7-1.amzn2023.0.1 @amazonlinux

使用下列指令在 Amazon Linux 上安裝特定版本的圖PHP形繪圖程式庫 (例如,php8.1 版本):AMI

[ec2-user ~]$ sudo dnf install -y php8.1-gd
修正 Apache web 伺服器的檔案權限

中的某些可用功能 WordPress 需要對 Apache 文件根目錄的寫入權限 (例如透過「管理」畫面上傳媒體)。如果您尚未這麼做,請套用下列群組成員資格和權限 (如 LAMPWeb 伺服器教學課程中更詳細的說明)。

  1. /var/www 及其內容的檔案所有權授予 apache 使用者。

    [ec2-user ~]$ sudo chown -R apache /var/www
  2. /var/www 及其內容的群組所有權授予 apache 群組。

    [ec2-user ~]$ sudo chgrp -R apache /var/www
  3. 變更 /var/www 及其子目錄的目錄許可,以新增群組寫入許可並設定日後子目錄的群組 ID。

    [ec2-user ~]$ sudo chmod 2775 /var/www [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  4. 請以遞迴方式變更 /var/www 及其子目錄的檔案許可。

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

    如果您打算還將其用 WordPress 作FTP服務器,則需要在此處進行更多寬鬆的 Group 設置。請檢閱中的建議步驟和安全性設定, WordPress以完成此操作。

  5. 重新啟動 Apache web 伺服器,以套用新的群組與許可。

    [ec2-user ~]$ sudo systemctl restart httpd
使用 AL2 023 執行 WordPress 安裝指令碼

您已準備好安裝 WordPress。使用的指令取決於作業系統。此程序中的指令可與 AL2 023 搭配使用。使用 AL2 023 AMI 後面的程序。

  1. 使用 systemctl 命令,確定每次系統開機時 httpd 和資料庫服務都會啟動。

    [ec2-user ~]$ sudo systemctl enable httpd && sudo systemctl enable mariadb
  2. 確認資料庫伺服器正在執行。

    [ec2-user ~]$ sudo systemctl status mariadb

    如果資料庫服務未執行,請啟動服務。

    [ec2-user ~]$ sudo systemctl start mariadb
  3. 確認 Apache web 伺服器 (httpd) 正在執行。

    [ec2-user ~]$ sudo systemctl status httpd

    如果 httpd 服務未執行,請啟動服務。

    [ec2-user ~]$ sudo systemctl start httpd
  4. 在網頁瀏覽器中,輸入您URL的 WordPress 部落格 (您執行個體的公用DNS位址,或該位址後面接著blog資料夾)。您應該會看到 WordPress 安裝指令碼。提供 WordPress 安裝所需的資訊。選擇 [安裝] WordPress 以完成安裝。如需詳細資訊,請參閱步驟 5:在 WordPress 網站上執行安裝指令碼

使用 AL2 023 執行 WordPress 安裝指令碼 AMI
  1. 使用 chkconfig 命令,確定每次系統開機時 httpd 和資料庫服務都會啟動。

    [ec2-user ~]$ sudo chkconfig httpd on && sudo chkconfig mariadb on
  2. 確認資料庫伺服器正在執行。

    [ec2-user ~]$ sudo service mariadb status

    如果資料庫服務未執行,請啟動服務。

    [ec2-user ~]$ sudo service mariadb start
  3. 確認 Apache web 伺服器 (httpd) 正在執行。

    [ec2-user ~]$ sudo service httpd status

    如果 httpd 服務未執行,請啟動服務。

    [ec2-user ~]$ sudo service httpd start
  4. 在網頁瀏覽器中,輸入您URL的 WordPress 部落格 (您執行個體的公用DNS位址,或該位址後面接著blog資料夾)。您應該會看到 WordPress 安裝指令碼。提供 WordPress 安裝所需的資訊。選擇 [安裝] WordPress 以完成安裝。如需詳細資訊,請參閱步驟 5:在 WordPress 網站上執行安裝指令碼

後續步驟

測試完 WordPress 博客後,請考慮更新其配置。

使用自訂的網域名稱

如果您的網域名稱與EC2執行個體的EIP地址相關聯,您可以將部落格設定為使用該名稱而非EC2公共DNS位址。如需詳細資訊,請參閱變更網站URL上的 WordPress 網站。

設定部落格

您可設定部落格使用不同的主題外掛程式,為讀者提供更為個人化的使用體驗。但安裝程序有時會出錯,使您失去整個部落格。我們強烈建議您在嘗試安裝任何佈景主題或外掛程式之前,先建立執行個體的備份 Amazon Machine Image (AMI),以便在安裝過程中出現任何問題時可以還原部落格。如需詳細資訊,請參閱 Amazon EC2 使用者指南AMI中的「建立您自己的」。

增加容量

如果您的 WordPress 部落格越來越受歡迎,而您需要更多的運算能力或儲存空間,請考慮下列步驟:

  • 擴展執行個體的儲存空間。如需詳細資訊,請參閱 Amazon EBS 彈性磁碟區

  • 將您的 My SQL 資料庫移RDS至 Amazon,以利用服務輕鬆擴展的能力。

改善網際網路流量的網路效能

如果您希望您的部落格能夠提高來自世界各地使用者的流量,請考慮 AWS Global Accelerator。Global Accelerator 可改善使用者用戶端裝置與執行 WordPress 應用程式之間的網際網路流量效能,協助您降低延遲時間 AWS。Global Accelerator 會使用AWS 全域網路,將流量導向至距離用戶端最近的 AWS 區域中運作良好的應用程式端點。

進一步了解 WordPress

以下鏈接包含有關的更多信息 WordPress。

說明! 我的公共DNS名稱改變了,現在我的博客被打破

系統會使用執行個體的公用DNS位址自動設EC2定您的 WordPress 安裝。如果您停止並重新啟動執行個體,公用位DNS址會變更 (除非該位址與彈性 IP 位址相關聯),而且您的部落格將無法再運作,因為它會參考位於不再存在 (或指派給其他EC2執行個體) 位址的資源。更詳細的問題描述以及幾種可能的解決方案概述在 https://wordpress.org/support/article/changing-the-site-url/

如果您的 WordPress 安裝發生了這種情況,您可以使用以下程序恢復博客,該程序使用wp-cli命令行界面 WordPress。

若要變更您URL的 WordPress 網站 wp-cli
  1. 使用 Connect 至您的EC2執行個體SSH。

  2. 請記下執行個體的舊網站URL和新網站URL。舊網站可能URL是您安裝時EC2執行個體的公開DNS名稱 WordPress。新網站URL是執行個體目前的公開DNS名EC2稱。如果您不確定您的舊網站URL,可以使用curl以下命令找到它。

    [ec2-user ~]$ curl localhost | grep wp-content

    您應該在輸出中看到對舊公共DNS名稱的引用,它看起來像這樣(舊網站URL為紅色):

    <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
  3. 使用下列命令下載 wp-cli

    [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  4. 使用以下命令搜索並替換 WordPress 安裝URL中的舊站點。將舊站台和新站台取代URLs為您的EC2執行個體,以及 WordPress 安裝路徑 (通常為/var/www/html/var/www/html/blog)。

    [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
  5. 在網頁瀏覽器中,輸入 WordPress 部落格URL的新網站,以確認網站再次正常運作。如果不是,請參閱變更網站URL常見安裝問題以取得詳細資訊。