AWS Elastic Beanstalk 部署 Node.js Web App 筆記
我有新的部落格了,歡迎來逛逛 https://blog.jhdev.pro/
前言
AWS 是目前市占率最高的雲端運算平台,服務相當多元,包括資訊科技基礎架構和應用的服務,如儲存、資料庫、計算、機器學習等等。不過因為服務架構複雜,對初學者來說很容易有見樹不見林的感覺,剛好最近在學習使用 AWS 部署,就先來介紹一個適合初學者使用的服務 —— Elastic Beanstalk。
重要提醒
在部署之前要提醒,AWS 屬於企業級平台,雖然提供免費方案,但是超過免費方案的範圍還是會收費,因此在使用時記得時常常看 Billing
,以免使用了很多付費服務而不自知。
部署的流程
- 建立 Elastic Beanstalk server
- 設定環境變數 Configuration
- RDS 資料庫設定
- 部署專案
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
,點擊中間的 上傳並部署
按鈕,然後選擇剛剛的專案壓縮檔。點擊 部署
後大概一兩分鐘就會完成部署
最後我們使用終端機依序輸入下列指令(記得要在專案的路徑下)
- 建立遠端 DB
npx sequelize db:create --env production
- 在遠端 DB 執行 migrate
npx sequelize db:migrate --env production
- 在遠端 DB 執行 seeder
npx sequelize db:seed:all --env production
如果出現錯誤,可能是前面的設定有錯,可以再檢查看看,跑完若沒有錯誤,回到 Elastic Beanstalk,點擊移至環境
就可以進入部署好的網頁啦~