Rails 應用服務器 AWS OpsWorks 堆棧層 - AWS OpsWorks

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

Rails 應用服務器 AWS OpsWorks 堆棧層

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

注意

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

Rails 應用程式伺服器層是一個 AWS OpsWorks 堆疊層,可為作為 Rails 應用程式伺服器的執行個體提供藍圖。

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

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

Ruby 版本

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

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

注意

AWS OpsWorks 堆棧安裝由配方和實例代理使用一個單獨的 Ruby 包。如需詳細資訊,請參閱 Ruby 版本

Rails 堆疊

默認的軌道堆棧是阿帕奇 2 與普島乘客。您也可以搭配使用 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 堆疊」安全性群組與圖層建立關聯,就會顯示此設定。您必須指定要和 layer 關聯的安全群組有哪些。如需詳細資訊,請參閱 建立新的堆疊

Elastic Load Balancer

您可以將 Elastic Load Balancing 負載平衡器附加到層的執行個體。

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

重要

如果您的 Ruby on Rails 應用程式使用 SSL,則建議您盡可能停用 SSLv3 來處理 CVE-2014-3566 中所述的漏洞。如需詳細資訊,請參閱 停用 Rails 伺服器的 SSLv3

停用 Rails 伺服器的 SSLv3

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

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

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

具有 Phusion Passenger 的 Apache

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

具有 Unicorn 的 Nginx

將明確的 ssl_protocols 指示詞新增至 Nginx 伺服器的 nginx.conf 檔案。要禁用 SSLv3,請覆蓋內置的 nginx 食譜nginx.conf.erb模板文件,Rails 應用程序服務器層的安裝配方用於創建nginx.conf,並添加以下指令:

ssl_protocols TLSv1.2;

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

連線至資料庫

部署應用程式時, AWS OpsWorks Stacks 會使用 App 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 堆棧從應用程序名稱生成。您在自訂 JSON 中指定的值會覆寫任何預設設定。如需詳細資訊,請參閱 新增應用程式

AWS OpsWorks 堆棧將以下[:...][:database]屬性值合併到中database.yml。所需的屬性取決於特定的數據庫,但你必須有一個host屬性,否則 AWS OpsWorks 堆棧將不會創建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-共享應用程序。

若要從 GitHub 儲存庫部署 Ruby on Rails 應用程式
  1. 使用 Apache/乘客作為 Rails 堆棧的 Rails 應用程序服務器層創建一個堆棧,將 24/7 實例添加到該層中,然後啟動它。

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

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

      AWS OpsWorks Stacks 使用此名稱作為顯示用途,並產生簡短名稱供內部使用,並在堆疊設定和部署屬性中識別應用程式。例如, PhotoPoll 短名稱是照片投票。

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

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

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

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

    • Repository URL (儲存庫 URL) – 應該從中部署程式碼的儲存庫。

      針對此範例,請將 URL 設為 git://github.com/awslabs/opsworks-demo-rails-photo-share-app

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

  3. 部署應用程式至 Rails 應用程式伺服器執行個體。

  4. 部署完成後,移至 [執行個體] 頁面,然後按一下 Rails 應用程式伺服器執行個體的公用 IP 位址。請查看下列事項: