前言

AWS 是目前市占率最高的雲端運算平台,服務相當多元,包括資訊科技基礎架構和應用的服務,如儲存、資料庫、計算、機器學習等等。不過因為服務架構複雜,對初學者來說很容易有見樹不見林的感覺,剛好最近在學習使用 AWS 部署,就先來介紹一個適合初學者使用的服務 —— Elastic Beanstalk

超多服務項目...

重要提醒

在部署之前要提醒,AWS 屬於企業級平台,雖然提供免費方案,但是超過免費方案的範圍還是會收費,因此在使用時記得時常常看 Billing,以免使用了很多付費服務而不自知。

部署的流程

  1. 建立 Elastic Beanstalk server
  2. 設定環境變數 Configuration
  3. RDS 資料庫設定
  4. 部署專案

1. 建立 Elastic Beanstalk server

從左上角的 服務 選單中找到 Elastic Beanstalk,點擊進入後環境方案選擇 Web伺服器環境

設定應用程式名稱,我用 Plauground-env平台 我用 Node.js,版本可以用預設,然後可以點擊 設定多個選項 稍微看看

前人的提醒:不要隨意更改設定,以免收到帳單

沒問題就按下 建立環境

等他跑一下,大概三五分鐘會建立好剛剛設定的環境

在等待的同時,我們可以做其他的事情,從左上角的 服務 選單進入 EC2,會發現執行中的執行個體變成 1 了(圖片是 2 ,因為我開兩個),代表 Elastic Beanstalk 幫我們開了一台 EC2,還有其它相關的配置。

2. 設定環境變數 Configuration

現在環境應該建立完成了,再次進入 Elastic Beanstalk,從左邊選單點擊 組態 ,再點擊右邊軟體 類別的 編輯 按鈕

往下拉到底,會看到環境屬性 ,這邊就是讓你填入環境變數用的,寫在 .env 檔案裡的變數都可以寫在這裡,填寫完成就按下 套用

3. RDS 資料庫設定

部署的過程中我們要做 RDS 資料庫設定,一樣從左上角的 服務 選單進入 RDS,然後點擊 Create database 按鈕。

RDS 資料庫的設定非常多,以下是使用 MySQL 的設定,其中有幾個重要設定特別說明:
1. 最重要的,Template選擇 Free tier

2. Settings 設定的帳號密碼要記起來,遠端連線時需要使用

3. Connectivity 底下有一個收折的Additional connectivity configuration 選單,展開選單並在Public access 選擇 Yes ,這樣才能使用外部的 GUI 軟體遠端連線 RDS 資料庫。
確定設定正確後,就按下Create database 按鈕。

回到 RDS 的首頁 Dashboard,點擊 DB instances,就會看到剛剛建立的資料庫,再點擊資料庫名稱,可以進入資料庫的操作頁面Endpoint & port 出現時,就代表資料庫建立完成了

接著回到 EC2,在右邊選單點擊安全群組,進入 default 那個群組,並加入以下傳入規則,之後才能遠端操作 RDS 資料庫。

4. 部署專案

部署之前要設定專案在 production 環境中的資料庫連線方式,我是使用 MySQL 的 ORM Sequelize,所以設定是在 config.json 中。

再來整個專案檔案壓縮成 zip檔(其他壓縮格式可能也行,我沒試過),平常有寫在 gitignore 的檔案「不要」一起壓縮,像是 node_module 或像是下圖我管理部署檔案的資料夾 deploy

專案壓縮完成後,進入到建立好的環境Plauground-env ,點擊中間的 上傳並部署 按鈕,然後選擇剛剛的專案壓縮檔。點擊 部署 後大概一兩分鐘就會完成部署

最後我們使用終端機依序輸入下列指令(記得要在專案的路徑下)

  1. 建立遠端 DB
    npx sequelize db:create --env production
  2. 在遠端 DB 執行 migrate
    npx sequelize db:migrate --env production
  3. 在遠端 DB 執行 seeder
    npx sequelize db:seed:all --env production

如果出現錯誤,可能是前面的設定有錯,可以再檢查看看,跑完若沒有錯誤,回到 Elastic Beanstalk,點擊移至環境 就可以進入部署好的網頁啦~

--

--