Rails 應用程式伺服器 AWS OpsWorks 堆疊層 - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Rails 應用程式伺服器 AWS OpsWorks 堆疊層

重要

AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將工作負載遷移到其他解決方案。如果您對遷移有任何疑問,請透過 AWS re:Post 或透過 AWS Premium Support 聯絡 AWS 支援 團隊。

注意

此 layer 僅適用於 Linux 類型堆疊。

Rails App Server layer 是 AWS OpsWorks Stacks layer,可為充當 Rails 應用程式伺服器的執行個體提供藍圖。

Installation: AWS OpsWorks Stacks 使用執行個體的套件安裝程式,在其預設位置安裝伺服器套件。如需 Apache/Passenger 安裝的詳細資訊,請參閱 Phusion Passenger。如需記錄的詳細資訊,請參閱 Log Files。如需 Nginx/Unicorn 安裝的詳細資訊,請參閱 Unicorn

Add Layer (新增 Layer) 頁面提供下列組態選項,而且全部都是選用的。

Ruby 版本

將由您的應用程式使用的 Ruby 版本。預設值為 2.3.

您也可以覆寫 [:opsworks][:ruby_version] 屬性,來指定慣用的 Ruby 版本。

注意

AWS OpsWorks Stacks 會安裝個別的 Ruby 套件,供配方和執行個體代理程式使用。如需詳細資訊,請參閱Ruby 版本

Rails 堆疊

預設的 Rails 堆疊是 Apache2 搭配 Phusion Passenger。您也可以搭配使用 NginxUnicorn

注意

如果您使用 Nginx 和 Unicorn,則必須將 Unicorn Gem 新增至應用程式的 Gemfile,如下列範例所示:

source 'https://rubygems.org' gem 'rails', '3.2.15' ... # Use unicorn as the app server gem 'unicorn' ...
Passenger 版本

如果您指定 Apache2/Passenger,則必須指定 Passenger 版本。預設值為 5.0.28。

Rubygems 版本

預設 Rubygems 版本是 2.5.1。

安裝和管理 Bundler

可讓您選擇是否安裝和管理 Bundler。預設值為 Yes (是)

Bundler 版本

預設 Bundler 版本是 1.12.5。

自訂安全群組

如果您選擇不自動將內建 AWS OpsWorks 的 Stacks 安全群組與 layer 建立關聯,則會顯示此設定。您必須指定要和 layer 關聯的安全群組有哪些。如需詳細資訊,請參閱建立新的堆疊

Elastic Load Balancer

您可以將 Elastic Load Balancing 負載平衡器連接至 layer 的執行個體。

您可以使用自訂JSON或自訂屬性檔案來修改某些組態設定。如需詳細資訊,請參閱覆寫屬性。如需可覆寫的 Apache、Nginx、Phusion Passenger 和 Unicorn 屬性清單,請參閱內建技術指南屬性

重要

如果您的 Ruby on Rails 應用程式使用 SSL,我們建議您SSLv3盡可能停用 以解決 CVE-2014-3566 中所述的漏洞。如需詳細資訊,請參閱SSLv3 停用 Rails Servers

SSLv3 停用 Rails Servers

若要停用 SSLv3 Rails 伺服器的 ,請將 layer 的 Ruby 版本設定更新為 2.1 或更新版本,其會將 Ruby 2.1.4 或更新版本安裝為應用程式使用的版本。

  • 將層級的 Ruby Version (Ruby 版本) 設定更新為 2.1 或更高版本。

  • 更新 Rails 堆疊的組態檔案,如下所示。

具有 Phusion Passenger 的 Apache

更新 Apache 伺服器 SSLProtocol 檔案中的 ssl.conf 設定,如SSLv3 停用 Apache 伺服器 中所述。

具有 Unicorn 的 Nginx

將明確的 ssl_protocols 指示詞新增至 Nginx 伺服器的 nginx.conf 檔案。若要停用 SSLv3,請覆寫 Rails App Server layer 設定配方用來建立 的內建 nginx 技術指南nginx.conf.erb範本檔案nginx.conf,並新增下列指令:

ssl_protocols TLSv1.2;

如需如何設定 的詳細資訊nginx.conf,請參閱設定HTTPS伺服器。如需如何覆寫內建範本的詳細資訊,請參閱使用自訂範本

連線至資料庫

部署應用程式時, AWS OpsWorks Stacks 會使用應用程式deploy屬性中的資訊建立新的database.yml檔案。如果您將 MySQL 或 Amazon RDS執行個體連接至應用程式, AWS OpsWorks Stacks 會將連線資訊新增至deploy屬性,讓 database.yml自動包含正確的連線資料。

如果應用程式沒有連接的資料庫,根據預設, AWS OpsWorks Stacks 不會將任何連線資訊新增至deploy屬性,也不會建立 database.yml。如果您想要使用不同的資料庫,您可以使用自訂JSON將資料庫屬性新增至具有連線資訊的應用程式的deploy屬性。屬性都在 下["deploy"]["appshortname"]["database"],其中 appshortname是應用程式的簡短名稱, AWS OpsWorks Stacks 會從應用程式名稱產生。您在自訂中指定的值會JSON覆寫任何預設設定。如需詳細資訊,請參閱新增應用程式

AWS OpsWorks Stacks 將下列[:...][:database]屬性值納入 database.yml。所需的屬性取決於特定的資料庫,但您必須具有host屬性,否則 AWS OpsWorks Stacks 不會建立 database.yml

  • [:adapter] (String) – 資料庫轉接器,例如 mysql

  • [:database] (字串) – 資料庫名稱。

  • [:encoding] (字串) – 編碼,通常設定為 utf8

  • [:host] (字串) – 主機 URL,例如 railsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com

  • [:reconnect] (布林值) – 如果連線不再存在,應用程式是否應重新連線。

  • [:password] (字串) – 資料庫密碼。

  • [:port] (數字). – 資料庫的連接埠號碼。使用此屬性可覆寫預設連接埠號碼,這是由轉接器所設定。

  • [:username] (字串) – 資料庫使用者名稱。

下列範例顯示簡短名稱為 myapp 的應用程式JSON自訂。

{ "deploy" : { "myapp" : { "database" : { "adapter" : "adapter", "database" : "databasename", "host" : "host", "password" : "password", "port" : portnumber "reconnect" : true/false, "username" : "username" } } } }

如需如何指定自訂 的資訊JSON,請參閱 使用自訂 JSON。若要查看用來建立 database.yml (database.yml.erb) 的範本,請前往內建技術指南儲存庫

部署 Ruby on Rails 應用程式

您可以從任何支援的儲存庫部署 Ruby on Rails 應用程式。以下顯示如何將範例 Ruby on Rails 應用程式部署至執行 Apache/Passenger Rails 堆疊的伺服器。範例程式碼存放在公 GitHub有儲存庫中,但其他支援的儲存庫的基本程序相同。如需如何建立和部署應用程式的詳細資訊,請參閱應用程式。若要檢視包含廣泛註解的範例程式碼,請前往 https://github.com/awslabs/opsworks-demo-rails-photo-share-app

從 GitHub 儲存庫部署 Ruby on Rails 應用程式
  1. 使用 Rails App Server layer 建立堆疊,並將 Apache/Passenger 作為 Rails 堆疊,將 24 小時全年無休的執行個體新增至 layer,然後啟動它

  2. 執行個體在線上之後,請新增應用程式至堆疊,並指定下列設定:

    • Name (名稱) – 您偏好的任何名稱;範例會使用 PhotoPoll

      AWS OpsWorks Stacks 會將此名稱用於顯示目的,並產生簡短名稱以供內部使用,以及識別堆疊組態和部署屬性中的應用程式。例如, PhotoPoll 簡短名稱為光輪詢。

    • App type (應用程式類型)Ruby on Rails

    • Rails environment (Rails 環境) – 可用的環境是由應用程式所決定。

      範例應用程式有三種:developmenttestproduction。針對此範例,請將環境設定為 development。如需每個環境的描述,請參閱範例程式碼。

    • 儲存庫類型 – 任何支援的儲存庫類型。在此範例中,指定 Git

    • 儲存庫 URL – 程式碼應部署的儲存庫。

      在此範例中,將 URL設定為 git://github.com/awslabs/opsworks-demo-rails-photo-share-app

    針對剩餘設定使用預設值,然後按一下 Add App (新增應用程式) 以建立應用程式。

  3. 將應用程式部署到 Rails App Server 執行個體。

  4. 部署完成後,請前往執行個體頁面,然後按一下 Rails App Server 執行個體的公有 IP 地址。請查看下列事項:

Congratulatory message for deploying first app with AWS OpsWorks, with stylized logo.