在 Windows Server 上佈署網頁應用程式,首先需安裝並設定 IIS 網頁伺服器,建立虛擬目錄指向應用程式存放路徑。接著,設定本地電腦與 EC2 例項的 SSH 連線,以便將應用程式檔案安全地複製到伺服器。這需要在本地端產生 SSH 金鑰對,並將公鑰新增到 EC2 例項的 authorized_keys 檔案中,同時設定正確的檔案許可權。此外,還需修改 sshd_config 檔案以確保 SSH 服務的正常運作,並在 AWS 管理主控臺中設定安全群組規則,允許 SSH 和 HTTP 連線。最後,文章說明瞭如何整合 Jenkins 與 AWS,透過 Jenkins 建立自動化佈署工作,使用 scp 命令將應用程式檔案佈署到 EC2 例項,並修改 Selenium 測試框架的設定,使其指向佈署後的應用程式 URL,實作自動化測試流程。
佈署電腦網頁應用程式
步驟 1:安裝 IIS 網頁伺服器
為了佈署電腦網頁應用程式,您需要在伺服器型別的 Windows 機器上安裝 IIS 網頁伺服器。以下是安裝 IIS 網頁伺服器的步驟:
- 按下 Windows 鍵,開啟 Windows 功能表搜尋,輸入「伺服器管理員」。
- 選擇「伺服器管理員」選單專案,開啟伺服器管理員儀錶板。
- 點選「新增角色和功能」連結,然後點選「下一步」按鈕。
- 保持「角色基礎或功能基礎安裝」選項被選中,點選「下一步」按鈕。
- 選擇「網頁伺服器 (IIS)」核取方塊,點選「新增功能」按鈕。
- 點選「下一步」按鈕,開啟「選擇伺服器角色」視窗。
- 點選「下一步」按鈕,開啟「選擇功能」視窗。
- 點選「下一步」按鈕,開啟「網頁伺服器角色 (IIS)」視窗。
- 點選「下一步」按鈕,開啟「確認安裝選擇」視窗。
- 點選「安裝」按鈕,等待安裝完成。安裝完成後,點選「關閉」按鈕。
步驟 2:設定 IIS 網頁伺服器
- 建立一個名為「DeployedCalculatorApp」的空目錄於 C:\。
- 現在,您需要在 IIS 中建立一個網頁別名(虛擬目錄),指向此目錄。前往 Windows 功能表,選擇「網際資訊服務 (IIS) 管理員」選項,開啟網際資訊服務 (IIS) 管理員視窗。
- 在 IIS 主控臺中開啟樹狀結構,右鍵點選「預設網站」,如圖 18-2 所示。
- 選擇「新增虛擬目錄」選單選項,開啟「新增虛擬目錄」視窗。填入別名名稱為「CalculatorWebApp」,並輸入 C:\DeployedCalculatorApp 作為物理路徑,如圖 18-3 所示。點選「確定」按鈕,以在預設網站中建立虛擬目錄。
步驟 3:設定本地電腦和 EC2 例項之間的 SSH 連線
作為電腦網頁應用程式佈署過程的一部分,您需要將 Calculator.html 從本地電腦複製到 EC2 例項中的 C:\DeployedCalculatorApp 目錄(您的 IIS 虛擬目錄指向此目錄)。為了從本地電腦複製檔案到 EC2 例項,您需要與 EC2 例項建立 SSH 連線。以下是設定所需設定的步驟:
- 在本地電腦上生成 SSH 金鑰對:使用
ssh-keygen -t rsa命令生成 SSH 公私金鑰對。 - 這將在本地電腦的 ${CURRENT_USER}.ssh 目錄中生成公私金鑰檔案。
內容解密:
上述步驟描述瞭如何安裝和設定 IIS 網頁伺服器,以及如何設定本地電腦和 EC2 例項之間的 SSH 連線。這些步驟是佈署電腦網頁應用程式的重要組成部分。接下來,我們將繼續探討如何將應用程式佈署到 EC2 例項中。
flowchart TD
A[開始] --> B[安裝 IIS 網頁伺服器]
B --> C[設定 IIS 網頁伺服器]
C --> D[設定本地電腦和 EC2 例項之間的 SSH 連線]
D --> E[佈署電腦網頁應用程式]
圖表翻譯:
此圖表描述了佈署電腦網頁應用程式的步驟。首先,我們需要安裝 IIS 網頁伺服器。接下來,我們需要設定 IIS 網頁伺服器,以便它可以與我們的應用程式合作。然後,我們需要設定本地電腦和 EC2 例項之間的 SSH 連線,以便我們可以將檔案複製到 EC2 例項中。最後,我們可以佈署電腦網頁應用程式到 EC2 例項中。
在EC2例項上安裝OpenSSH Server
為了在EC2例項上啟用SSH連線,首先需要安裝OpenSSH Server。以下是安裝步驟:
- 開啟設定頁面:在EC2例項的Windows系統中,點選開始選單中的設定按鈕。
- 進入應用程式與功能:在設定頁面中,點選「應用程式」選項,以開啟應用程式與功能視窗。
- 管理可選功能:在應用程式與功能視窗中,點選「管理可選功能」連結。
- 新增功能:點選「新增功能」按鈕。
- 選擇OpenSSH Server:在功能列表中找到OpenSSH Server選項,並點選它。
- 安裝OpenSSH Server:點選「安裝」按鈕以安裝OpenSSH Server。
建立authorized_keys檔案
為了啟用SSH公鑰認證,需要在EC2例項上建立一個名為authorized_keys的檔案,並將公鑰內容貼入其中。以下是建立步驟:
- 開啟命令提示符:在EC2例項的C:\users\administrator目錄中,開啟命令提示符。
- 建立.ssh目錄:執行
mkdir.ssh命令,以建立.ssh目錄。 - 進入.ssh目錄:執行
cd.ssh命令,以進入.ssh目錄。 - 建立authorized_keys檔案:使用
fsutil file createnew authorized_keys 0命令,建立一個名為authorized_keys的空白檔案。 - 貼入公鑰內容:將公鑰內容貼入authorized_keys檔案中。
- 儲存變更:儲存authorized_keys檔案的變更。
設定authorized_keys檔案許可權
為了確保authorized_keys檔案的安全,需要設定適當的許可權。以下是設定步驟:
- 右鍵點選authorized_keys檔案:在檔案總管中,右鍵點選authorized_keys檔案。
- 選擇屬性:從右鍵選單中選擇「屬性」。
- 進入安全標籤頁:在屬性視窗中,點選「安全」標籤頁。
- 進入高階設定:點選「高階」按鈕。
- 停用繼承:點選「停用繼承」按鈕。
- 轉換繼承許可權:選擇「將繼承許可權轉換為明確許可權」選項。
- 確認:點選「確定」按鈕,以確認變更。
修改sshd_config檔案
為了完成OpenSSH Server的設定,需要修改sshd_config檔案。以下是修改步驟:
- 前往C:\ProgramData\ssh目錄:在檔案總管中,前往C:\ProgramData\ssh目錄。
- 顯示隱藏檔案:如果ProgramData目錄不顯示,需要在檢視選單中選擇顯示隱藏檔案和目錄。
- 修改sshd_config檔案:使用文字編輯器修改sshd_config檔案,以完成OpenSSH Server的設定。
18.4 SSH連線設定
為了讓Jenkins能夠與AWS EC2例項進行SSH連線,需要進行一些設定。首先,開啟sshd_config檔案,滾動到最後兩行,並在每行的開頭新增#以註解這兩行,如圖18-4所示。

接下來,儲存檔案並重新啟動Open SSH Server服務。為此,前往服務視窗,選擇「Services」選單並重新啟動服務。
允許SSH連線
在連線到EC2例項之前,需要允許SSH連線。為此,請按照以下步驟進行:
- 前往AWS管理主控臺,點選左側導航欄中的「Instances」連結。
- 選擇正在執行的例項,然後點選「Security」標籤。
- 在「Security」標籤中,點選「security groups」標籤下的連結。
- 點選「Edit Inbound Rules」按鈕。
- 點選「Add Rule」按鈕。
- 在「Type」欄位中,選擇「SSH」。
- 在「Source」欄位中,輸入
0.0.0.0/0。 - 點選「Save Rules」按鈕。
這些步驟將允許SSH連線從任何IP地址到您的EC2例項。新增的規則將被新增到安全群組中的現有規則中。
內容解密:
上述步驟的目的是設定SSH連線以便Jenkins能夠與EC2例項進行通訊。透過允許SSH連線,Jenkins就可以遠端執行命令和指令碼,以實作自動化佈署和管理。
圖表翻譯:
以下是設定SSH連線的流程圖:
flowchart TD
A[開始] --> B[開啟sshd_config檔案]
B --> C[註解最後兩行]
C --> D[儲存檔案]
D --> E[重新啟動Open SSH Server服務]
E --> F[允許SSH連線]
F --> G[前往AWS管理主控臺]
G --> H[選擇例項]
H --> I[點選Security標籤]
I --> J[點選security groups標籤下的連結]
J --> K[點選Edit Inbound Rules按鈕]
K --> L[點選Add Rule按鈕]
L --> M[選擇SSH]
M --> N[輸入0.0.0.0/0]
N --> O[點選Save Rules按鈕]
這個流程圖展示了設定SSH連線的步驟,從開啟sshd_config檔案到允許SSH連線。
連線EC2例項並佈署應用程式
在上一章中,我們已經設定好了EC2例項和Jenkins的整合。現在,我們需要測試SSH連線並將應用程式佈署到EC2例項。
測試SSH連線
首先,我們需要測試SSH連線是否正常。開啟終端機,輸入以下命令:
ssh <UserName>@<EC2Instance_PublicIPV4DNS>
將 <UserName> 和 <EC2Instance_PublicIPV4DNS> 替換為您的使用者名稱和EC2例項的公網IP。
例如:
ssh Administrator@ec2-3-141-17-90.us-east-2.compute.amazonaws.com
如果您第一次連線到EC2例項,系統會提示您確認是否繼續連線。輸入 yes 並按下Enter鍵。
複製檔案到EC2例項
現在,我們需要將 Calculator.html 檔案複製到EC2例項。使用以下命令:
scp -i /directory/to/privatekey /your/local/file/to/copy
將 /directory/to/privatekey 替換為您的私鑰檔案路徑, /your/local/file/to/copy 替換為您要複製的檔案路徑。
例如:
scp -i C:\Users\magicuser\.ssh\id_rsa D:\JenkinsBookExamples\CalcualtorWebApplication\src\main\webapp\Calculator.html
這個命令會將 Calculator.html 檔案複製到EC2例項的 C:\DeployedCalculatorApp 目錄。
存取複製的檔案
要存取複製的檔案,您需要建立一個入站規則以允許HTTP連線。按照之前建立SSH入站規則的步驟,選擇HTTP作為型別。
然後,重新啟動World Wide Web Publishing服務。開啟瀏覽器,輸入以下URL:
http://<EC2Instance_PublicIPV4DNS>/CalculatorWebApp/Calculator.html
將 <EC2Instance_PublicIPV4DNS> 替換為您的EC2例項的公網IP。
例如:
http://ec2-3-141-17-90.us-east-2.compute.amazonaws.com/CalculatorWebApp/Calculator.html
現在,您應該可以存取 Calculator.html 檔案了。
圖表翻譯:
graph LR
A[本地電腦] -->|SSH連線|> B[EC2例項]
B -->|複製檔案|> C[EC2例項上的檔案]
C -->|HTTP連線|> D[瀏覽器]
這個圖表展示了本地電腦與EC2例項之間的SSH連線、檔案複製和HTTP連線的過程。
整合Jenkins與AWS
在本章中,我們將探討如何整合Jenkins與AWS,實作自動化佈署和測試的流程。
建立Jenkins工作以佈署計算器網頁應用程式
首先,我們需要建立一個Jenkins工作,負責佈署計算器網頁應用程式到EC2例項上。這個工作包含了一個Windows批次命令的執行步驟,使用scp命令將計算器網頁應用程式從本地目錄複製到EC2例項上。
scp -i C:\Users\magicuser\.ssh\id_rsa src\main\webapp\Calculator.html Administrator@ec2-3-141-17-90.us-east-2.compute.amazonaws.com:/C:/DeployedCalculatorApp
這個工作會從版本控制系統中提取計算器網頁應用程式的程式碼,然後使用scp命令將Calculator.html檔案複製到EC2例項上的指定目錄中。
修改計算器應用程式URL
由於Selenium框架預設存取本地電腦上的Calculator.html檔案,現在我們需要修改Selenium框架中的應用程式URL,以便存取佈署在EC2例項上的Calculator.html檔案。
我們需要修改EnvVars.csv檔案中的ApplicationURL環境變數,加入EC2例項的Calculator.html URL。然後,提交並推播這個變更到Selenium框架的版本控制系統中。
ApplicationURL,http://ec2-3-141-17-90.us-east-2.compute.amazonaws.com/Calculator.html
執行Jenkins工作
現在,我們可以執行BuildAndDeployCalculatorWebApplicationOnEC2Instance工作了。點選「Build」按鈕,即可啟動工作的執行。
工作完成後,會觸發TestCalculatorWebApplication工作,這個工作會對佈署在EC2例項上的計算器網頁應用程式進行測試。
內容解密:
scp命令用於安全地複製檔案從本地目錄到遠端伺服器。Execute Windows batch command是一種Jenkins的執行步驟,允許執行Windows批次命令。EnvVars.csv檔案用於儲存環境變數,在Selenium框架中使用。ApplicationURL環境變數儲存了計算器網頁應用程式的URL。
圖表翻譯:
flowchart TD
A[BuildAndDeployCalculatorWebApplicationOnEC2Instance] --> B[提取計算器網頁應用程式碼]
B --> C[使用scp命令複製Calculator.html到EC2例項]
C --> D[觸發TestCalculatorWebApplication工作]
D --> E[對佈署在EC2例項上的計算器網頁應用程式進行測試]
這個流程圖描述了Jenkins工作的執行流程,從提取計算器網頁應用程式碼到對佈署在EC2例項上的計算器網頁應用程式進行測試。
從系統整合與佈署視角來看,本文詳述了將電腦網頁應用程式佈署至 AWS EC2 例項的完整流程,涵蓋了 IIS 設定、SSH 連線建立、檔案傳輸及 Jenkins 整合等關鍵環節。透過逐步的指令操作和圖表輔助,降低了佈署的技術門檻,即使是初學者也能循序漸進地完成佈署工作。然而,文中以 0.0.0.0/0 開放 SSH 連線埠存在安全風險,建議限縮來源 IP 範圍以提升安全性。此外,直接修改 sshd_config 檔案也並非最佳實務,更建議使用 PowerShell 或其他更安全的設定方式。對於應用程式 URL 的設定,雖然透過修改 CSV 檔案達成,但更彈性的作法是利用環境變數或引數化建置,避免硬編碼造成的維護困擾。展望未來,可以進一步探討自動化指令碼的撰寫,例如使用 Ansible 或 Terraform 等工具,將基礎設施設定與應用程式佈署流程式碼化,提升佈署效率並減少人為錯誤。對於追求更高用性和容錯能力的系統,則可以考慮容器化技術和負載平衡策略,確保應用程式在各種情況下都能穩定執行。玄貓認為,儘管本文提供的佈署流程已具備一定的實用性,但仍需考量安全性、可維護性和可擴充套件性等導向,才能打造更穩健且符合業界最佳實務的佈署流程。