本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Sinatra 應用程式部署到 Elastic Beanstalk
此說明會逐步引導您將簡易的 Sinatra
注意
AWS 在 2024 年 10 月 1 日之後建立的帳戶,將需要暫時設定 選項,才能成功建立新環境。與新帳戶相同,但僅適用於帳戶尚未擁有環境 的區域,現有帳戶將需要採取相同的動作。如需詳細資訊,請參閱啟動範本。
必要條件
本教學假設您具備基本的 Elastic Beanstalk 操作及 Elastic Beanstalk 主控台知識。若您尚不了解,請依照 Elastic Beanstalk 入門 中的說明來啟動您的第一個 Elastic Beanstalk 環境。
為了遵循本指南的程序,您需要命令列終端機或 shell 來執行命令。命令清單前會出現提示字元 ($) 及目前的目錄名稱 (如有)。
~/eb-project$ this is a command
this is output
在 Linux 和 macOS 上,您可以使用偏好的 Shell 和套件軟體管理工具。在 Windows 上,您可以安裝適用於 Linux 的 Windows 子系統
Sinatra 2.1.0 需要 Ruby 2.3.0 或更新版本。本教學課程中,我們使用 Ruby 3.0.2 和對應的 Elastic Beanstalk 平台版本。遵循 為 Elastic Beanstalk 設置 Ruby 開發環境 的指示安裝 Ruby。
啟動 Elastic Beanstalk 環境
使用 Elastic Beanstalk 主控台建立 Elastic Beanstalk 環境。選擇 Ruby (Ruby) 平台,並接受預設的設定和範本程式碼。
啟動環境 (主控台)
-
使用此預先設定的連結開啟 Elastic Beanstalk 主控台: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced
-
在 Platform (平台),選取符合您應用程式所使用語言的平台和平台分支。
-
針對 Application code (應用程式程式碼),選擇 Sample application (範例應用程式)。
-
選擇 Review and launch (檢閱和啟動)。
-
檢視可用選項。選擇您要使用的可用選項,當您準備就緒時,請選擇 Creat app (建立應用程式)。
使用大約需要五分鐘時間建立環境,並且建立下列資源:
-
EC2 執行個體 – Amazon Elastic Compute Cloud (AmazonEC2) 虛擬機器,設定為在您選擇的平台上執行 Web 應用程式。
每個平台會執行特定的一套軟體、設定檔和指令碼,來支援特定的語言版本、架構、Web 容器或其組合。大多數平台會使用 Apache 或 NGINX 作為反向代理,位於 Web 應用程式前方,將請求轉送給它,提供靜態資產,並產生存取和錯誤日誌。
-
執行個體安全群組 – Amazon EC2安全群組,設定為允許連接埠 80 上的傳入流量。此資源可讓來自負載平衡器的HTTP流量到達執行 Web 應用程式的EC2執行個體。在預設情況下,不允許傳輸資料從其他通訊埠傳送。
-
負載平衡器 - Elastic Load Balancing 負載平衡器,可設定將請求分配到執行您應用程式的執行個體。負載平衡器也讓您的執行個體不需直接連接到網際網路。
-
負載平衡器安全群組 – 設定為允許連接埠 80 上傳入流量的 Amazon EC2安全群組。此資源可讓來自網際網路的HTTP流量達到負載平衡器。在預設情況下,不允許傳輸資料從其他通訊埠傳送。
-
Auto Scaling 群組 - Auto Scaling 群組,設為在執行個體終止或無法使用時,取代該執行個體。
-
Amazon S3 儲存貯體 - 儲存位置,用來儲存當您使用 Elastic Beanstalk 時所建立的原始程式碼、日誌和其他成品。
-
Amazon CloudWatch 警示 – 兩個 CloudWatch 警示,可監控您環境中執行個體的負載,並在負載過高或過低時觸發。當警示觸發時,您的 Auto Scaling 群組會擴展或縮減以進行回應。
-
AWS CloudFormation 堆疊 – Elastic Beanstalk 使用 AWS CloudFormation 啟動環境中的資源並傳播組態變更。資源定義於範本中,您可在 AWS CloudFormation 主控台
中檢視此範本。 -
網域名稱 – 以 形式路由至 Web 應用程式的網域名稱
subdomain
.region
.elasticbeanstalk.com。
這些資源全都由 Elastic Beanstalk 管理。當您終止環境時,Elastic Beanstalk 會終止其中的所有資源。
注意
Elastic Beanstalk 建立的 Amazon S3 儲存貯體會在環境間共享,且不會在環境終止時刪除。如需詳細資訊,請參閱將 Elastic Beanstalk 與 Amazon S3 搭配使用。
寫入基本 Sinatra 網站
欲建立並部署 Sinatra 應用程式
-
使用下列內容,建立名為 config.ru 的組態檔案。
範例 config.ru
require './helloworld' run Sinatra::Application
-
使用下列內容,建立名為 helloworld.rb 的 Ruby 程式碼檔案。
範例 helloworld.rb
require 'sinatra' get '/' do "Hello World!" end
-
使用下列內容建立 Gemfile。
範例 Gemfile
source 'https://rubygems.org' gem 'sinatra' gem 'puma'
-
執行套件安裝作業以產生
Gemfile.lock
~/eb-sinatra$
bundle install
Fetching gem metadata from https://rubygems.org/.... Resolving dependencies... Using bundler 2.2.22 Using rack 2.2.3 ... -
我們需要更新
Gemfile.lock
,讓 Elastic Beanstalk 能在 Ruby 平台上成功部署應用程式。Gemfile.lock
的某些相依性可能僅限於平台。因此,我們需要將platform ruby
新增至Gemfile.lock
,以便在部署過程中一併安裝所有必要的相依性。~/eb-sinatra$
bundle lock --add-platform ruby
Fetching gem metadata from https://rubygems.org/.... Resolving dependencies... Writing lockfile to /Users/janedoe/EBDPT/RubyApps/eb-sinatra/Gemfile.lock -
使用下列內容建立 Procfile。
範例 Procfile
web: bundle exec puma -C /opt/elasticbeanstalk/config/private/pumaconf.rb
部署您的應用程式
建立原始碼套件,其中包含您的原始碼。以下命令建立一個名為 sinatra-default.zip
的原始碼套件。
~/eb-sinatra$ zip ../sinatra-default.zip -r * .[^.]*
將來源套件上傳至 Elastic Beanstalk,以將 Sinatra 部署到您的環境。
若要部署原始碼套件
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
-
在環境概觀頁面上,選擇 Upload and deploy (上傳和部署)。
-
使用畫面顯示對話方塊來上傳原始碼套件。
-
選擇 Deploy (部署)。
-
部署完成時,您可以選擇網站URL,在新索引標籤中開啟您的網站。
清除
當您完成使用 Elastic Beanstalk 時,即可終止您的環境。Elastic Beanstalk 會終止與環境相關聯的所有 AWS 資源,例如 Amazon EC2執行個體 、資料庫執行個體 、負載平衡器 、安全群組和警示 。
從主控台終止您的 Elastic Beanstalk 環境
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
-
選擇 Actions (動作),然後選擇 Terminate Environment (終止環境)。
-
使用畫面顯示對話方塊來確認環境終止。
您可以使用 Elastic Beanstalk,隨時輕鬆地為您的應用程式建立新環境。
後續步驟
如需 Sinatra 的詳細資訊,請瀏覽 sinatrarb.com
隨著您繼續開發應用程式,您可能會希望無須手動建立 .zip 檔案並將其上傳至 Elastic Beanstalk 主控台,即可管理環境和部署應用程式。Elastic Beanstalk 命令列介面 (EB CLI) 提供 easy-to-use從命令列建立、設定和部署應用程式至 Elastic Beanstalk 環境的命令。
最後,如果您計劃在生產環境中使用應用程式,則需要設定環境的自訂網域名稱,並啟用 HTTPS 以進行安全連線。