在 Azure Portal 輕鬆設定:自動備份我的 Azure Web App

前言 在 Azure 上的網站開發過程中,若不確定開發人員是否有做版控,或是幫客戶代管網站放在 Azure Web App,可以設定自動備份功能,自動備份功能在 Standard 定價層才有,而舊 Portal 和新 Portal 提供的備份功能又有差異。本文簡介如何讓 Azure 自動備份您的網站程式與相關資源。 概念 舊 Portal 上的參數及設定較少,可參考下圖:  將自動備份開啟後,下面要選擇備份放在哪個 Azure Storage、幾天備份一次 (可以看到最多90天)、備份開始日期及時間,設定完成後可以選擇最下方「BACKUP NOW」,立即備份目前的網站檔案。但舊 Portal 的缺點在於不能選擇備份保留多久 (預設是永久保留) ,以下我們就以新 Portal 來實作,並介紹相關設定。 實作 登入新 Azure Portalhttps://portal.azure.com 選擇欲設定自動備份的 Web App→所有設定 備份→設定 指定要存到哪個 Azure Storage、Container (建議先建立好 Storage 跟 Container)  設定備份排程,可調整以下參數:頻率:幾個頻率單位備份一次頻率單位:天 / 小時開始:備份開始日期及時間保留(天數):備份保留天數,保留天數越多當然越佔用 Storage 空間,費用也會較高,設定為 0 代表無限制保留時間至少保留一個備份:勾選後,即使備份保留時間過了,但還是會保留一份最近的備份 如果您有搭配 SQL Database,可以一起備份 設定結束後按下「Save」儲存設定值 可使用「BACKUP NOW」功能,立即備份一次 網站程式 到 Azure Storage 裡面就可以看到備份檔案 《補充》若想要排除一些資料夾或檔案進行備份,請參考相關連結:在 Azure App Service 中備份 Web 應用程式提供的方式。 費用 備份這個功能包含在 Azure Web App – Standard Tier 中,但保留的備份檔由於是存在 Azure Storage 內,因此要計算 Storage 的費用。 相關連結 在 Azure App Service 中備份 Web 應用程式   == 要試用 Azure的朋友 ,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==

利用 powershell 指令存放 Credential 交換 Azure Web App 的生產環境與預備環境

前言 當我們在 Azure Web App 上開發網站,寫好正式網站後,後續一定會有修改或者改版…等等重新佈署的情況,此時我們可以利用 Azure Web App 的功能:新增一個預備環境 (Deployment Slot),先行測試修改好的網站,而測試完成後,就會進行正式環境與預備環境的交換 (switch) 動作,但網站交換動作用 Azure 管理介面點選實在好繁瑣啊~一般利用 Azure 管理介面交換的話,步驟大致如下:登入 Azure Portal→找到 Azure Web App 服務→點入欲交換的網站→按下交換→選擇來源與目的網站→確認交換佈署,這些動作做下來可能需要 5 分鐘的時間!如果使用 powershell 指令,事先把 credential 先建立好,可以縮短交換網站的前置時間,在 30 秒內送出交換指令,直接完成網站交換!本文介紹如何利用 powershell 指令存放 credential,並交換 Azure Web App 的 Production 與 Staging 網站。 必要條件 請事先建立 Azure AD 使用者,並給予訂閱的 co-administrator 權限 利用 Get-Credential 指令存放您的 Azure 帳密 $credential = Get-Credential 將上個步驟的帳密存成 txt 檔,當然不是明文!是加密過的,接著往後就可以使用這個 Credential 跑排程 (請自行調整 txt 存放位置參數) $credential.Password | ConvertFrom-SecureString | Set-Content C:\PS\swap\password.txt 實作 我已事先建立好 testmain 及 testsub (預備網站),如下圖:   轉換前的 testmain 網站,是由 Azure Web App Gallery - Blog Engine 所建立出來的 Blog: 以下步驟可以存成ps1,利用手動開啟、或 Windows 工作排程去觸發: 讀取先前建立的密碼文字檔,並轉換成登入 OrgID 需要的格式 $password = Get-Content C:\PS\swap\password.txt | ConvertTo-SecureString 使用 Azure AD 帳號加上解密完的密碼進行登入 $mycreds = New-Object System.Management.Automation.PSCredential ("AzureAD帳號", $password)$LiveCred = Get-Credential -Credential $mycredsAdd-AzureAccount -Credential $LiveCred 選擇 Azure 訂閱,請記得修改參數 Select-AzureSubscription -subscriptionName "Azure Pass" 根據您的需求,利用下列某一行指令執行即可。 #如果只有一個 deployment slot,就使用以下指令Switch-AzureWebsiteSlot -Name <AzureWebsiteName> #如果要 slot swap slot 可以用以下指令Switch-AzureWebsiteSlot –Name <AzureWebsiteName> -Slot1 <slotName> -Slot2 <slotName> #如果要 production 跟其中一個 slot 交換可以用以下指令Switch-AzureWebsiteSlot –Name <AzureWebsiteName> -Slot1 <slotName> 可以看到 testmain 網站已經交換完成,由 Blog Engine 變成 Azure Web App Default 建立起來的畫面!    == 要試用 Azure的朋友 ,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==

當 Azure Web App 建立預備環境後,將主網站檔案複製至測試網站

前言 Azure Web App 的 Standard Tier (或以上的計價層次) 有一個非常好用的功能,就是能夠在主網站 (Production) 下建立一個測試網站 (Staging) ,但這個預備環境 (Deployment Slot) 被建立起來後,預設是完全沒有任何檔案的,Azure Web App 不會自動將 Production 的環境複製一份到 Staging 環境。此時我們可以利用 kudu 管理介面內提供的 Extension ,來進行複製的動作,這樣我們就不用將程式搬到本機端,再 FTP 上傳至測試環境。 實作 可以看到下圖已經在 testsyncmain 底下建立一個 testsyncsub 的 Deployment Slot 。(這邊就不贅述如何新增 Deployment Slot ,請各位自行尋找相關資源學習。) 利用以下網址連入kudu管理介面 (注意:要連入的是主網站,也就是要被複製的網站):https://<AzureWebSiteName>.scm.azurewebsites.net  選擇上排最右側的的「Site Extensions」,並輸入關鍵字「Site Replicator」,按下「+」以新增此Extension至網站。  此時會提醒您是否安裝,按下「Install」即可。  安裝完成後,請重啟網站(按下 Restart Site),才能開始使用 Extension 。 啟動Site Replicator的Extension:  欲複製到哪個網站,下載它的 Publish Settings File,並在此頁面選擇好、按下「Submit」。註:這邊也不贅述如何下載,這邊提供一個方法:可以到 Azure 管理後台去下載。  可以看到 testsynmain 到 testsyncsub 正在「Deploying」…  跑一段時間後,可以看到狀態變成「Succeeded」,代表複製完畢。 本來 testsyncsub 是空白網站,但可以看到現在已經變成 Blog Engine 所提供的部落格了! 費用 Azure Web App – Standard Tier (或以上的計價層次) 才能建立 Deployment Slot ,因此要選擇此方案的 Hosting Plan ,相關功能才有用處!以上所有費用包在 Azure Web App 的計價內。 相關連結 How do I copy a website from one azure website to another (not deployment slots)?   == 要試用 Azure的朋友 ,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==