利用 AWS Elastic Beanstalk 部署 Wordpress 環境


 

 

1. 准備 wordpress 代碼

  1.  https://wordpress.org/download/ 將代碼壓縮包下載到本地,
  2. 解壓,會有一個 wordpress 目錄
  3. 復制 wp-config-sample.php 為 wp-config.php,修改。將下面的代碼
define('DB_NAME', 'database_name_here');
define('DB_USER', 'username_here');
define('DB_PASSWORD', 'password_here');
define('DB_HOST', 'localhost');
修改為:
define('DB_NAME',     $_SERVER["RDS_DB_NAME"]);
define('DB_USER',     $_SERVER["RDS_USERNAME"]);
define('DB_PASSWORD', $_SERVER["RDS_PASSWORD"]);
define('DB_HOST',     $_SERVER["RDS_HOSTNAME"]);

4. 將 wordpress 目錄中的代碼打包為一個新的 zip 文件 (注意不能直接打包 wordpress 目錄)

2.  AWS 操作

2.1 准備工作

  • 創建一個 VPC,帶至包括在兩個AZ內的兩個 subnet;創建一個 internet gateway 並綁定到VPC;設置默認 route table 中到 IGW 的 rule
  • 創建一個 key pair

2.2 創建一個單實例 wordpress 測試環境

(1)進入 AWS Beanstalk 節點,點擊 Create Application,輸入

(2)點擊 Create Now 創建 Environment

 

(3)選擇 Web server environment

(4)配置 Environment

Platform 選擇 PHP:

上傳前面打包好的代碼zip文件,該文件會被保存到S3中。

點擊  Create Environment 按鈕,開始創建 Environment。

經過幾分鍾,Environment 創建好以后,點擊下圖頂上的 URL 鏈接,

出現下面的頁面:

這是因為沒有配置數據庫。

2.3 重新創建帶RDS的Environment

在點擊 Create Environment 之前,點擊 Configure more options 按鈕來進行更多配置。

點擊 Database 下面的 Modify 按鈕來修改 Database配置。下面的配置使用一個  RDS 實例:

點擊 Security 下面的 Modify,設置 EC2 Key Pair,以便將來能夠登錄到虛機。

點擊 Network Tab 下面的 Modify 按鈕來修改 Network。選擇 VPC 和 subnet:

 

回到 Network 配置,設置 RDS 實例的 subnet,需要設置在兩個AZ中的至少兩個subnet:

配置完成,點擊 Create Environment,開始創建過程。從Events 能看出大概的過程包括

  1. 創建一個 RDS 實例
  2. 創建一個 EIP,會綁定到 EC2
  3. 創建一個 EC2 實例

2.4 更新代碼

修改 wordpress 代碼,打包成一個新的zip 文件。點擊 Upload and Deploy:

上傳文件,點擊 Deploy:

新版本部署成功。

2.5 升級架構

在 Configuration 頁面中,分別做下面的配置修改:

在 Capacity Modify 頁面中,配置 ASG:

在 Load Banlancer 頁面中配置 LB。

在 Security 頁面中配置 EC2 Kay Pair,以便將來登錄進虛機。

在 Network 頁面中修改虛機所在的 subnet。

在 Software 頁面中配置日志相關,將日志保存到 S3 和 導入到 CloudWatch:

點擊 Apply Configuration 開始應用配置改動。

 3. 一點心得

以上只是簡單地從AWS界面上嘗試使用了該功能的一些步驟。一點感受如下:

  • 速度較慢。創建一個很小的環境就需要十幾分鍾。
  • Configuration 中的部分配置互相有影響,修改了一處后往往需要在別的地方做修改,但是頁面上沒有提示。
  • 預定義好的Platforms 的架構太簡單,無法滿足生產需求。
  • 用戶定制Platform 過程很復雜。
  • Configuration 難以擴展。只支持 ec2,rds,elb,asg,vpc 等,但是一個應用往往還需要其它資源。可選途徑包括 EBExtensions 和 CloudFormation,但使用似乎較難。
  • ELB 還在使用快被淘汰的Classic類型,我估計基於虛機的PaaS 估計 AWS 也不打算繼續整了,還是轉到容器比較實際一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM