本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
覆寫內建範本
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
注意
本主題僅適用於 Linux 堆疊。您無法在 Windows 堆疊上覆寫內建範本。
所以此 AWS OpsWorks 堆疊內建配方會使用範本在執行個體上建立檔案,主要是伺服器的設定檔案,例如 Apache。例如,apache2
配方使用 apache2.conf.erb
httpd.conf
(Amazon Linux) 或 apache2.conf
(Ubuntu)。
這些範本中的大部分組態設定是以屬性呈現,因此自訂組態檔案的偏好方式是覆寫適當的內建屬性。如需範例,請參閱覆寫內建屬性。不過,如果您想要自訂的設定不是以內建屬性呈現,或根本不在範本中,則必須覆寫範本本身。本主題說明如何覆寫內建範本,以指定自訂 Apache 組態設定。
您可以將 ErrorDocument
設定新增至 httpd.conf
檔案,以將自訂錯誤回應提供給 Apache。apache2.conf.erb
只會包含一些標示為註解的範例,如下所示:
... # # Customizable error responses come in three flavors: # 1) plain text 2) local redirects 3) external redirects # # Some examples: #ErrorDocument 500 "The server made a boo boo." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html ...
因為這些設定是硬式編碼註解,所以您無法覆寫屬性來指定自訂值;您必須覆寫範本本身。不過,與屬性不同的是,沒有方法可以覆寫範本檔案的特定部分。您必須建立與內建版本同名的自訂技術指南、將範本檔案複製至相同的子目錄,以及視需要修改檔案。本主題顯示如何覆寫 apache2.conf.erb
以提供錯誤 500 的自訂回應。如需覆寫範本的一般討論,請參閱使用自訂範本 。
重要
當您覆蓋 buiIt-in 模板時,內置配方使用模板的自定義版本,而不是內置版本。If AWS OpsWorks 堆疊會更新內建範本,自訂範本會變成不同步且可能無法正常運作。 AWS OpsWorks 堆棧不會經常進行此類更改,並且當模板發生更改時, AWS OpsWorks 堆棧列出了更改,並為您提供升級到新版本的選項。我們建議您監控 AWS OpsWorks 堆疊儲存庫以
若要開始,請建立自訂技術指南。
建立技術指南
-
在
opsworks_cookbooks
目錄中,建立並導覽至名為apache2
的技術指南目錄。若要覆寫內建範本,自訂技術指南必須與內建技術指南同名,在此範例中為apache2
。注意
如果您已經完成 覆寫內建屬性 逐步解說,則可以在此範例中使用相同的
apache2
技術指南,並略過步驟 2。 -
使用下列內容建立
metadata.rb
檔案,然後將它儲存至apache2
目錄。name "apache2" version "0.1.0"
-
在
apache2
目錄中,建立templates/default
目錄。注意
該
templates/default
目錄適用於使用默認apache2.conf.erb
模板的 Amazon Linux 實例。Ubuntu 14.04 執行個體使用作業系統特定apache2.conf.erb
範本,其位在templates/ubuntu-14.04
目錄中。如果您也想要自訂套用至 Ubuntu 14.04 執行個體,則也必須覆寫該範本。 -
將內建
apache2.conf.erb
範本複製至您的 templates/default
目錄。開啟範本檔案,並將ErrorDocument 500
行標示為註解,並提供自訂錯誤訊息,如下所示:... ErrorDocument 500 "
A custom error message.
" #ErrorDocument 404 /missing.html ... -
建立
opsworks_cookbooks
命名的.zip
存檔opsworks_cookbooks.zip
,然後將檔案上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。為求簡化,請將封存設為公有。記錄歸檔以URL供日後使用。您也可以將食譜存放在私有 Amazon S3 存檔或其他存放庫類型中。如需詳細資訊,請參閱技術指南儲存庫。傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊,請參閱如何清空 S3 儲存貯體?或如何刪除 S3 儲存貯體?。
注意
為求簡化,此範例會將硬式編碼錯誤訊息新增至範本。若要變更它,您必須修改範本,並重新安裝技術指南。為了給自己更大的靈活性,您可以在自訂食譜的屬性檔案中為錯誤字串定義預設的自訂customize.rb
屬性,並將該屬性的值指派給ErrorDocument 500
。例如,如果您將屬性命名為 [:apache][:custom][:error500]
,則 apache2.conf.erb
中的對應行看起來應該與下列類似:
... ErrorDocument 500 <%= node
[:apache][:custom][:error500]
%> #ErrorDocument 404 /missing.html ...
您接著可以覆寫 [:apache][:custom][:error500]
,隨時變更自訂錯誤訊息。如果您使用 custom JSON 來覆蓋屬性,則甚至不需要觸摸食譜。
若要使用自訂範本,請建立堆疊,並安裝技術指南。
使用自訂範本
-
開啟 AWS OpsWorks [堆疊] 主控台
,然後選擇 [新增堆疊]。 -
指定下列標準設定:
-
名稱 — ApacheTemplate
-
地區 — 美國西部 (奧勒岡)
-
預設SSH金鑰 — Amazon 彈性運算雲 (AmazonEC2) key pair
如果您需要建立 Amazon EC2 key pair,請參閱 Amazon EC2 金鑰配對。請注意,key pair 必須屬於與執行個體相同的AWS區域。
選擇 Advanced>> (進階>>),並選擇 Use custom Chef cookbooks (使用自訂 Chef 技術指南) 指定下列設定:
-
存儲庫類型-HTTP 存檔
-
存儲庫 URL-您之前記錄URL的食譜存檔
接受其他設定的預設值,然後選擇 Add Stack (新增堆疊) 來建立堆疊。
-
-
選擇 [新增圖層],然後使用預設設定將 Java 應用程式伺服器層新增至堆疊。
-
新增全年無休執行個體 (具有預設設定) 至 layer,然後啟動執行個體。
在此範例中,t2.micro 執行個體就已足夠。
-
執行個體上線後,請使用連線至執行個體SSH。
httpd.conf
檔案位在/etc/httpd/conf
目錄中。檔案應該包含自訂ErrorDocument
設定,看起來會與下列類似:... # Some examples: ErrorDocument 500 "A custom error message." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html ...