本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Rails 應用程式伺服器 AWS OpsWorks 堆疊層
重要
AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將工作負載遷移到其他解決方案。如果您對遷移有任何疑問,請透過 AWS re:Post
注意
此 layer 僅適用於 Linux 類型堆疊。
Rails App Server layer 是 AWS OpsWorks Stacks layer,可為充當 Rails 應用程式伺服器的執行個體提供藍圖。
Installation: AWS OpsWorks Stacks 使用執行個體的套件安裝程式,在其預設位置安裝伺服器套件。如需 Apache/Passenger 安裝的詳細資訊,請參閱 Phusion Passenger
Add Layer (新增 Layer) 頁面提供下列組態選項,而且全部都是選用的。
- Ruby 版本
-
將由您的應用程式使用的 Ruby 版本。預設值為 2.3.
您也可以覆寫 [:opsworks][:ruby_version] 屬性,來指定慣用的 Ruby 版本。
注意
AWS OpsWorks Stacks 會安裝個別的 Ruby 套件,供配方和執行個體代理程式使用。如需詳細資訊,請參閱Ruby 版本。
- Rails 堆疊
-
預設的 Rails 堆疊是 Apache2
搭配 Phusion Passenger 。您也可以搭配使用 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 的 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 伺服器的 ,請將 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 應用程式
-
使用 Rails App Server layer 建立堆疊,並將 Apache/Passenger 作為 Rails 堆疊,將 24 小時全年無休的執行個體新增至 layer,然後啟動它。
-
執行個體在線上之後,請新增應用程式至堆疊,並指定下列設定:
-
Name (名稱) – 您偏好的任何名稱;範例會使用
PhotoPoll
。AWS OpsWorks Stacks 會將此名稱用於顯示目的,並產生簡短名稱以供內部使用,以及識別堆疊組態和部署屬性中的應用程式。例如, PhotoPoll 簡短名稱為光輪詢。
-
App type (應用程式類型) – Ruby on Rails。
-
Rails environment (Rails 環境) – 可用的環境是由應用程式所決定。
範例應用程式有三種:
development
、test
及production
。針對此範例,請將環境設定為development
。如需每個環境的描述,請參閱範例程式碼。 -
儲存庫類型 – 任何支援的儲存庫類型。在此範例中,指定
Git
。 -
儲存庫 URL – 程式碼應部署的儲存庫。
在此範例中,將 URL設定為
git://github.com/awslabs/opsworks-demo-rails-photo-share-app
。
針對剩餘設定使用預設值,然後按一下 Add App (新增應用程式) 以建立應用程式。
-
-
將應用程式部署到 Rails App Server 執行個體。
-
部署完成後,請前往執行個體頁面,然後按一下 Rails App Server 執行個體的公有 IP 地址。請查看下列事項:
![Congratulatory message for deploying first app with AWS OpsWorks, with stylized logo.](images/rails_example.png)