本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Elastic Beanstalk Ruby 平台
本主題說明如何在 Elastic Beanstalk 上設定、建置及執行 Ruby 應用程式。
AWS Elastic Beanstalk 支援多個不同版本的 Ruby 程式設計語言的平台分支。見紅寶石 AWS Elastic Beanstalk 平台文檔以獲取完整列表。
Ruby Web 應用程序可以在 Puma 應用程序服務器下的NGINX代理服務器後面運行。如果您使用 RubyGems,您可以在來源套裝軟體Gemfile中包含,以便在部署期間安裝套件。
應用程式伺服器組態
Elastic Beanstalk 會根據您在建立環境時選擇的 Ruby 平台分支安裝 Puma 應用程式伺服器。如需有關 Ruby 平台版本所提供之元件的詳細資訊,請參閱中的支援平台 AWS Elastic Beanstalk 平台指南。
您可以使用自己提供的 Puma 伺服器設定您的應用程序。這提供了一個選項,以使用 Ruby 平台分支預先安裝的 Puma 其他版本。您也可以將應用程式設定為使用不同的應用程式伺服器,例如 Passenger。若要這麼做,您必須在您的部署中包含並自訂 Gemfile
。您還需要設定 Procfile
以啟動應用程式伺服器。如需更多詳細資訊,請參閱使用 Procfile 設定應用程式程序。
其他組態選項
Elastic Beanstalk 提供組態選項,您可以使用這些選項來自訂在 Elastic Beanstalk 環境中在 Amazon 彈性運算雲端 (AmazonEC2) 執行個體上執行的軟體。您可以設定應用程式所需的環境變數,啟用至 Amazon S3 的日誌輪換,並在應用程式來源中,將包含靜態檔案的資料夾映射到代理伺服器提供的路徑。平台也會預先定義與 Rails 和 Rack 相關的部分常見環境變數,方便探索及使用。
Elastic Beanstalk 主控台中提供了修改正在執行環境組態的組態選項。要避免在終止環境的組態時遺失組態,您可以使用已儲存組態來儲存您的設定,並在之後套用至另一個環境。
若要將設定儲存於原始程式碼,您可以包含組態檔案。每次您建立環境或部署應用程式,組態檔案裡的設定就會套用。您也可以使用組態檔案來安裝套件、執行指令碼,並在部署期間執行其他執行個體自訂操作。
在 Elastic Beanstalk 主控台中套用的設定會覆寫組態檔案中相同的設定 (如存在)。這可讓您在組態檔案中擁有預設設定,並以主控台的環境專屬設定覆寫之。如需優先順序以及其他變更設定方法的詳細資訊,請參閱組態選項。
如需各種擴充 Elastic Beanstalk Linux 類型平台方式的詳細資訊,請參閱 擴充 Elastic Beanstalk Linux 平台。
設定您的 Ruby 環境
您可以使用 Elastic Beanstalk 主控台來啟用至 Amazon S3 的日誌輪換,和設定您應用程式可從環境讀取的變數。
欲存取環境的軟體組態設定
開啟彈性魔豆控制台
,然後在「區域」列表中選擇您的 AWS 區域. -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
日誌選項
Log options (日誌選項) 區段有兩個設定:
-
Instance profile (執行個體描述檔) – 指定執行個體描述檔,此描述檔具備存取和您應用程式相關聯 Amazon S3 儲存貯體的許可。
-
啟用 Amazon S3 的日誌檔輪替 — 指定是否將應用程式 Amazon EC2 執行個體的日誌檔複製到與應用程式關聯的 Amazon S3 儲存貯體。
靜態檔案
若要改善效能,您可以使用 [靜態檔案] 區段,將 Proxy 伺服器設定為從 Web 應用程式內的一組目錄提供靜態檔案 (例如,HTML或影像)。對於每個目錄,您可以設定目錄映射的虛擬路徑。代理伺服器收到位於指定路徑下的檔案請求時,會直接提供檔案而非將請求路由至您的應用程式。
如需使用組態檔案或 Elastic Beanstalk 主控台設定靜態檔案的詳細資訊,請參閱提供靜態檔案。
預設情況下,Ruby 環境中的代理伺服器會設定為提供靜態檔案如下:
-
public
資料夾中的檔案透過/public
路徑和根網域 (/
路徑) 提供。 -
public/assets
子資料夾中的檔案透過/assets
路徑提供。
下列範例說明預設組態的運作方式:
-
若您的應用程式原始碼在名為
public
的資料夾中有一個名為logo.png
的檔案,則代理伺服器會透過
和subdomain
.elasticbeanstalk.com/public/logo.png
將此檔案提供給使用者。subdomain
.elasticbeanstalk.com/logo.png -
若您的應用程式原始碼在
public
資料夾中有一個名為assets
的資料夾,裡面含有一個名為logo.png
的檔案,則代理伺服器會透過
提供此檔案。subdomain
.elasticbeanstalk.com/assets/logo.png
您可以為靜態檔案設定其他映射項目。如需詳細資訊,請參閱本主題後面部分的 Ruby 組態命名空間。
注意
對於 Ruby 2.7 AL2 版本 3.3.7 之前的平台版本,默認的 Elastic Beanstalk nginx 代理服務器配置不支持從域根()提供靜態文件。
此平台版本於 2021 年 10 月 21 日推出。如需詳細資訊,請參閱新平台版本-Ruby AWS Elastic Beanstalk 版本說明。subdomain
.elasticbeanstalk.com/
環境屬性
環境屬性區段可讓您在執行應用程式的 Amazon EC2 執行個體上指定環境組態設定。環境屬性會以金鑰值對的形式傳到應用程式。
Ruby 平台定義下列環境資訊的屬性:
-
BUNDLE_ WITHOUT — 從 Gemfile 安裝相依性
時要忽略的以冒號分隔的群組清單。 -
BUNDLER_ DEPLOYMENT _ MODE — 設定為
true
(預設值) 以使用 Bundler 在部署模式下安裝相依性。設定為 false
,在開發模式中執行bundle install
。注意
此環境屬性未在 Amazon Linux AMI Ruby 平台分支上定義(在 Amazon Linux 2 之前)。
-
RAILS_ _ SKIP ASSET _ COMPILATION — 設定為
true
rake assets:precompile
在部署期間略過執行。 -
RAILSSKIP_ MIGRATIONS — 設定為
true
rake db:migrate
在部署期間略過執行。 -
RACK_ ENV — 指定機架的環境階段。例如,
development
、production
或test
。
在 Elastic Beanstalk 內所執行的 Ruby 環境中,可使用 ENV
物件來存取環境變數。例如,您可使用下列程式碼,來將名為 API_ENDPOINT
的屬性讀取到變數:
endpoint = ENV['API_ENDPOINT']
如需詳細資訊,請參閱 環境屬性與其他軟體設定。
Ruby 組態命名空間
您可以使用組態檔案來設定組態選項,並在部署期間執行其他的執行個體設定工作。組態選項可以是平台特定的,也可以整體套用至 Elastic Beanstalk 服務中的所有平台。組態選項會組織成命名空間。
您可以使用 aws:elasticbeanstalk:environment:proxy:staticfiles
命名空間來設定環境代理以提供靜態檔案。您可以定義虛擬路徑到應用程式目錄的對應項目。
Ruby 平台不會定義任何特定於平台的命名空間。反而會定義通用 Rails 和 Rack 選項的環境屬性。
下列組態檔案會指定靜態檔案選項,將對應名為 staticimages
的目錄對應至路徑 /images
,設定每個平台定義的環境屬性,以及設定名為 LOGGING
的其他環境屬性。
範例 .ebextensions/ruby-settings.config
option_settings:
aws:elasticbeanstalk:environment:proxy:staticfiles:
/images: staticimages
aws:elasticbeanstalk:application:environment:
BUNDLE_WITHOUT: test
BUNDLER_DEPLOYMENT_MODE: true
RACK_ENV: development
RAILS_SKIP_ASSET_COMPILATION: true
RAILS_SKIP_MIGRATIONS: true
LOGGING: debug
注意
BUNDLER_DEPLOYMENT_MODE
環境屬性和aws:elasticbeanstalk:environment:proxy:staticfiles
命名空間未在 Amazon Linux AMI Ruby 平台分支上定義(在 Amazon Linux 2 之前)。
Elastic Beanstalk 可提供許多組態選項讓您自訂環境。除了組態檔案之外,您也可以使用主控台、儲存的組態CLI、EB 或 AWS CLI。 組態選項如需詳細資訊,請參閱。