本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Rails 應用服務器 AWS OpsWorks 堆棧層
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post
注意
此 layer 僅適用於 Linux 類型堆疊。
Rails 應用程式伺服器層是一個 AWS OpsWorks 堆疊層,可為作為 Rails 應用程式伺服器的執行個體提供藍圖。
安裝: AWS OpsWorks Stack 會使用執行個體的套件安裝程式,將伺服器套件安裝在預設位置。如需 Apache/Passenger 安裝的詳細資訊,請參閱 Phusion Passenger
Add Layer (新增 Layer) 頁面提供下列組態選項,而且全部都是選用的。
- Ruby 版本
-
將由您的應用程式使用的 Ruby 版本。預設值為 2.3.
您也可以覆寫 [:opsworks][:ruby_version] 屬性,來指定慣用的 Ruby 版本。
注意
AWS OpsWorks 堆棧安裝由配方和實例代理使用一個單獨的 Ruby 包。如需詳細資訊,請參閱 Ruby 版本。
- Rails 堆疊
-
默認的軌道堆棧是阿帕奇 2 與普
島乘客。 您也可以搭配使用 Nginx 與 Unicorn 。 注意
如果您使用 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,請將 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 應用程式
-
使用 Apache/乘客作為 Rails 堆棧的 Rails 應用程序服務器層創建一個堆棧,將 24/7 實例添加到該層中,然後啟動它。
-
執行個體在線上之後,請新增應用程式至堆疊,並指定下列設定:
-
Name (名稱) – 您偏好的任何名稱;範例會使用
PhotoPoll
。AWS OpsWorks Stacks 使用此名稱作為顯示用途,並產生簡短名稱供內部使用,並在堆疊設定和部署屬性中識別應用程式。例如, PhotoPoll 短名稱是照片投票。
-
App type (應用程式類型) – Ruby on Rails。
-
Rails environment (Rails 環境) – 可用的環境是由應用程式所決定。
範例應用程式有三種:
development
、test
及production
。針對此範例,請將環境設定為development
。如需每個環境的描述,請參閱範例程式碼。 -
存放庫類型 — 任何受支援的存放庫類型。在此範例中,指定
Git
。 -
Repository URL (儲存庫 URL) – 應該從中部署程式碼的儲存庫。
針對此範例,請將 URL 設為
git://github.com/awslabs/opsworks-demo-rails-photo-share-app
。
針對剩餘設定使用預設值,然後按一下 Add App (新增應用程式) 以建立應用程式。
-
-
部署應用程式至 Rails 應用程式伺服器執行個體。
-
部署完成後,移至 [執行個體] 頁面,然後按一下 Rails 應用程式伺服器執行個體的公用 IP 位址。請查看下列事項: