• 忘記 Azure Virtual Machines 密碼怎麼辦? 如何利用 PowerShell 重設密碼

    感謝北科大劉建昌同學翻譯 Keith Mayer 發表的文章 http://blogs.technet.com/b/keithmayer/archive/2014/06/26/microsoft-azure-virtual-machines-reset-forgotten-admin-password-with-windows-powershell.aspx ,這是 Microsoft Azure Virtual Machines 用戶常見問題之一。

     

    使用 Windows PowerShell 重新設定 Microsoft Azure Virtual Machine 系統管理者密碼

    IT pro team 在提供 Azure 或是混合雲服務時,常常遇到有人詢問如何重新設定Microsoft Azure virtual machine的密碼。

    如果忘記了 VM 管理者的密碼,有任何重新設定的機會嗎? 答案是有的,在最新  Microsoft Azure PowerShell module (版本0.7.4或更高版本)的說明中,提供了一個簡單的方法來解決這個問題! 接下來,我們將透過使用 Microsoft Azure PowerShell module,重置 Microsoft Azure VM上已經建置好的管理員使用憑證。

    重置Microsoft Azure VM的管理者密碼

    照著以下的步驟,我們可以透過 Windows PowerShell 和 Microsoft Azure PowerShell Module 來重新設定已經被建置在 Microsoft Azure VM上的 Windows Server 管理員憑證。

    (注意! 進行以下的步驟前,請確認 Microsoft Azure VM 是可以透過遠端桌面順利連線成功的)

    1.如果你還沒有開通訂閱,請先申請免費的 Microsoft Azure 的帳號

    2.使用 Windows Server 平台上其中一個映像檔建立一個新的 VM

    clip_image002

    使用組件庫建立 VM 畫面

    在建立 VM 的過程時,要確認你的 VM 是有安裝 VM 代理程式,因為之後的步驟都是利用這個VM代理程式做擴充,來重置已經建置好的管理者憑證,並且確保遠端桌面可以進入到VM裡面。

    當使用Azure上所提供的映象檔建立VM時,可以在配置頁的最後一頁,選取安裝VM代理程式的選項 (預設時就已經選取打勾了)

    clip_image004

    安裝 VM 代理程式畫面

    若是透過Window PowerShell 的New-AzureVM 和 New-AzureQuickVM 這兩個指令來建立新的Microsoft Azure VM時,同樣的也已經預設好要安裝VM代理程式。

    目前的版本,VM 代理程式可以支援在自訂的作業系統組態或已經部屬好應用程式的   VM上進行四個擴充功能:

    1. - BGInfo -在桌面背景上插入伺服器名稱、位址等資訊

    2.- VM Access -啟用遠端桌面設定,並且重設內建管理員的管理者憑證

    3.- Puppet Enterprise Agent -用來連接一個 Puppet Master server,並且接收配置

    4.- Chef -用來連接一個 Chef server,並且接收配置,當你新建立的VM狀態顯示 為正在配置中時,請接續進行下一個步驟

     

    3.下載最新版的Microsoft Azure PowerShell Module

    在之後的步驟,將需要使用到版本 0.7.4 或是更高版本的 PowerShell Module。若是先前已經安裝好 Microsoft Azure PowerShell Module,可以透過下列的 PowerShell 指令來確認目前安裝的版本為多少 :

    Get-Module Azure

    未來你可能想要將這個module安裝到PowerShell3.0或是PowerShell4.0的環境上。注意,當安裝完這個module後,需要重新啟動電腦,讓剩餘的片段程式碼完成運作。


    4.啟動Windows PowerShell ISE 並且執行下列的PowerShell cmdlets來連結你的Microsoft Azure帳戶

    clip_image006

    啟動Windows PowerShell ISE 畫面

    Set-ExecutionPolicyRemoteSigned
    Import-Module Azure
    Add-AzureAccount

    clip_image008

    執行程式碼畫面

    當登入提示出現後,輸入用來啟動Microsoft Azure 訂用的使用者帳號與密碼

    clip_image010

    輸入訂用的帳戶畫面

    5.windows PowerShell ISE執行以下的PowerShell指令,藉此來確認你的Microsoft Azure訂用帳戶(如果您有多個訂用)

    Get-AzureSubscription | Format-Table –Property SubscriptionName

    clip_image012

    確認訂用的帳戶名稱畫面

    在下一個步驟中,我們將可以指定想要更改管理者帳號的VM所在的訂用帳戶。

    6.windows PowerShell ISE執行以下的PowerShell cmdlet,藉此來選擇你的Microsoft Azure訂用帳戶(如果您有多個訂用)

    $subscription = “ENTER YOUR SUBSCRIPTION NAME HERE”
    Select-AzureSubscription –Default $subscription

        
    clip_image014

    確認訂用的帳戶名稱畫面

    7.windows PowerShell ISE執行以下的片段代碼,用來告知您所想要重置哪一個現有VM內的本地管理者使用者帳號

    $adminCredentials = Get-Credential -Message "Enter new Admin credentials"


    clip_image016

    clip_image018

    輸入要更改的帳號名稱畫面

    • 輸入已經存在本地管理者的使用者名稱,則下列片段碼會利用輸入的密碼來重設帳號
    • 輸入一個新的使用者名稱,則下列片段碼會重新命名現有本地管理者,並且去 匹配指定的使用者名稱

    在輸入密碼的部分,需要符合密碼複雜度的要求,下列事項中,最少須遵守三個注意事項 :

    1. 一個大寫字母

    2. 一個小寫字母

    3. 一個數字或一個特殊符號

    (注意!,如果輸入密碼沒有遵守複雜度的需求,下列片段碼依然會執行成功,但是到了  VM重新開機之後,我們還是需要利用VM代理程式來申請新的密碼)

    8.windows PowerShell ISE執行以下的片段代碼,用來重新設定選定的Azure VM的本地管理者憑證


    (Get-AzureVM) | 
    Where-Object -Property Status -EQ "ReadyRole" |
    Select-Object -Property Name, ServiceName |
    Out-GridView -Title "Select a VM …" -PassThru |
    ForEach-Object {
        $VM = Get-AzureVM -Name $_.Name -ServiceName $_.ServiceName
        If ($VM.VM.ProvisionGuestAgent) {
            Set-AzureVMAccessExtension -VM $VM `
                -UserName $adminCredentials.UserName `
                -Password $adminCredentials.GetNetworkCredential().Password `
                -ReferenceName "VMAccessAgent" | 
            Update-AzureVM
            Restart-AzureVM -ServiceName $VM.ServiceName -Name $VM.Name
        } else {
            Write-Output "$($VM.Name): VM Agent Not Installed"
        }
    }

    讓我們來一行一行看看上面片段碼的詳細資訊 :

    首先,Get-AzureVM 將前幾個步驟中所選定的Azure訂用帳戶裡所有的VM列舉出來。因為我們只能夠重新設定正在執行中的VM的本地使用者憑證,因此我們透過 Where-Object filter將狀態在 ReadyRole 的VM列舉出來。

    我們透過 Out-GridViewcmd let顯示過濾後的VM清單,這個指令會提示選取需要被重置的本地管理者憑證。最後,被選到的VM將透過管道傳遞到ForEach-Object block,並且使用 Set-AzureVMAceessExtensioncmdlet來重新設定每個被選取的本地管理者憑證。

    這個區塊也會使用 Restart-AzureVMcmdlet 來重新啟動每一個被選取的VM

    使得上述作的更動可以被處理完畢。

    clip_image020

    選擇  VM 之畫面

    clip_image022

    VM 更新且完成重新啟動畫面

  • 微軟電子書 Building Cloud Apps with Microsoft Azure 免費開放下載

    感謝北科大劉建昌同學翻譯 Devon Musgrave (http://azure.microsoft.com/blog/2014/08/05/free-ebook-from-microsoft-press-building-cloud-apps-with-microsoft-azure/) 發表之訊息。

    近日微軟公司發表了一本由 Scott Guthrie, Mark Simms, Tom Dykstra, Rick Anderson, Mike Wasson 等人共同撰寫的免費電子書:

    Building Cloud Apps with Microsoft Azure: Best practices for DevOps, data storage, high availability, and more

    9780735695658f

    此電子書提供 PDF 格式,Mobi 格式與 ePub 格式,可在多種行動裝置上觀看。下載網址

    http://www.microsoftvirtualacademy.com/ebooks

    透過這本電子書,可引導閱讀者以模組的方式來建構真實世界中的雲端應用系統,本書最主要是根據 Scott Guthrie 在 2013 年 6 月挪威開發者大會和 2013 年  9月在澳洲的微軟 TechEd 時所發表的內容撰寫而成,現在由影片轉化成書面的形式呈現給大家看。

    您可以透過 Microsoft Press blog 部落格來了解更多關於電子書以及如何下載的相關資訊,也可發現更多的免費電子書可以下載。

  • 我該選擇哪一種 Azure 的分散式快取 (Cache) 方案?

    本文主要內容譯自 http://msdn.microsoft.com/en-us/library/azure/dn766201.aspx

    在2014年5月12日,微軟宣布 Azure Redis Cache (技術預覽) 開始提供用戶測試使用。微軟公司建議 Azure 用戶所有的新開發的應用系統,未來皆採用 Azure Redis Cache。Azure Redis Cache 提供用戶一個由微軟管理,安全,專用的 Redis 快取服務。Microsoft Azure 提供了這項服務之後,用戶開始可以充分利用 Redis 目前在業界既有的生態系統與豐富的功能,並透過微軟穩定地營運與監管。

    Redis

    不同於只能使用 Key-Value 成對式的傳統的快取,Redis 之所以流行是因其具有多樣化且高效能之資料型別,Redis 所支援的各種資料型別可參閱 http://redis.io/topics/data-types。 Redis 也支援這些資料型別的運算操作 (atomic operation),例如用戶可以附加文字到一個 String; 可以遞增 Hash ; 可以推送一個資料至 List ; 可以計算兩個 Set 之間是否有交集的字串,差異的字串,與聯集的字串; 或是在 Sorted sets 內找到一個排序最高的成員。其他功能還包括支援運算不可部分完成的交易 (Transaction) ,發布/訂閱模式,Lua scripting,以及使 Redis 的表現更像一些傳統快取服務的相關功能,例如在 : 特定時間內 (time-to-live) 有效的 Key-Value 之配置與設置。

    另一個重要的原因,是因為 Redis 週邊已經成功建立了一健康,充滿活力的開放原始程式碼之生態系統。能夠提供跨多種程式語言之 Redis client 用戶端環境,這使得 Microsoft Azure 內的現有用戶,無倫使用何種作業系統或程式語言都可以適用。對於 Microsoft ASP.NET 的用戶而言,Azure Redis Cache 亦提供了 ASP.NET Session State Provider,可參閱 http://msdn.microsoft.com/en-us/library/azure/dn690522.aspx 步驟進行設定。如何取的 Redis Client Library for Microsoft .NET 可參閱 http://msdn.microsoft.com/en-us/library/azure/dn690471.aspx

    目前 Microsoft Azure Redis 的高速快取服務雖尚在技術預覽階段,目前在快取容量可達 26 GB。預計在 2014 年底前此服務即會正式推出,屆時 Microsoft Azure Redis 將會支援超過 26 GB 的快取容量,並提供 99.9% 不停機的高可用性服務水準合約 (SLA)。

    而目前既有的 Azure Managed Cache Service 同樣提供了 99.9% 高可用性服務水準合約 (SLA)。如果你是一個現有的 Azure Managed Cache Service 客戶,你仍可以繼續使用現有的服務或選擇未來遷移到 Microsoft Azure Redis ,以享用 Redis 所提供的各類新功能。同樣如果你是現有 Azure In-Role Cache 的客戶,你仍可以繼續使用現有的服務或選擇未來遷移到 Microsoft Azure Redis 以享用Redis 所提供的各類新功能。對於 Azure Shared Cache 的客戶,請注意 Azure Shared Cache 將於 2014年 9月1日終止服務,您應該盡快移植現有應用系統至其他快取服務,對於 Azure Shared Cache 移植相關指引文件可參閱: Migrate from Shared Caching.

  • 使用 Azure WebSites 時如何避免 IP 位址被列為黑名單

    AzureBlog_AutoHealing

    感謝北科大劉建昌同學翻譯 Richard Marr 所發表的文章  http://azure.microsoft.com/blog/2014/07/29/avoiding-ip-blacklisting-with-azure-web-sites/

    在雲端多租戶 (multi-tenant) 環境中有時用戶會共享一些 IP 位址,例如目前在技術預覽階段的 Microsoft Azure Websites 共用 ( Shared ) 模式或免費 ( Free ) 模式,倘若有一兩個用戶的網站內含惡意內容 ( malicious content )。在某些情況下這些網站可能是被連累的,但也可能這些網站是故意的。無論哪種狀況都可能導致與其共享 IP 位址的其他網站,被加進各種網站黑名單服務的列表中。一旦一個共享 IP 位址被列入黑名單,就會影響到其它無辜的用戶。

    當這樣的事情發生時,大多數用戶的本能反應就是聯繫自己的託管公司,告知託管公司將被封鎖的 IP 位址從黑名單中移除。然而,這只能暫時解決這種狀況。如果問題沒有真正解決,這些惡意網站(通常時間不會太久)還是會導致共享的 IP 位址再次被列入黑名單。

    保護您的網站

    由於你沒有辦法控制其他租戶在 Azure 上的網站內容,也因此無法得知是哪些網站導致了共享 IP 位址被加入到黑名單中。

    唯一可靠的解決方法就是,透過配置一個專用的 IP 位址,來避免這種狀況的發生。這意味著您的網站將使用自己專屬的 IP,這個 IP並不會與其他網站共享。在 Microsoft Azure Websites 標準 ( Standard ) 模式中,用戶可透過配置 IP SSL 的方式,很容易地得到一個專用的 IP 位址。此解決方法僅適用於 Microsoft Azure Websites 標準 ( Standard ) 模式,如果您的網站使用自訂的網域 ( Custom Domain ),則還要注意一些額外的事項。

    如果您使用的是自定網域,並且在 DNS 中有一筆 CNAME 記錄指向 Azure Websites 的域名(例如 : contoso.azurewebsites.net)那麼只需要更新 DNS 內該筆紀錄,然後配置 IP-SSL,不用擔心 IP 位址變更造成的困擾。

    若您 DNS 內是使用 A Record 方式解析網域名稱到特定 IP 位址,我們建議您按照下列步驟操作:

    1. 改變你的主機名稱對映方式 ( 例如 :  www.contoso.com ) :

    從使用 A Record 改成利用 CNAME 指向您的 Microsoft Azure WebSites 域名 ( 例如 : contoso.azurewebsites.net )

    ( 由於是指向同一個 IP 位址,因此這個動作並不會造成停機時間。只需要等待一些時間讓 DNS 更新 )

    2.上傳一個憑證 ( www.contoso.com ) 到你的網站:

    這個步驟可以在設定 (Configure) 標籤頁面裡的網域名稱下完成,通常你需要從憑證供應商那裏購買憑證。但是您若不是真的需要使用 SSL 只是為了得到專屬 IP 位址,則您可以使用自行簽署憑證的方式來完成。這種憑證相當容易產生,並且不會有任何的花費。( 有關於自行簽署憑證的相關資訊,請參考我 SSL指南 )

    image

    image

    3.為 www.contoso.com 配置一個以 IP 為主的 SSL 繫結 ( IP Based SSL binding ) ,這個選項在SSL繫結內可以設定。( 詳細步驟請參考 SSL 指南中配置 SSL 的部分 )

    image

    相關步驟也可參閱 http://blogs.msdn.com/b/benjaminperkins/archive/2014/05/05/how-to-get-a-static-ip-address-for-your-microsoft-azure-web-site.aspx (英文)

    回報問題

    一旦您已經配置了一個專屬的 IP 位址,請回報之前 IP 位址被列為黑名單的問題給微軟公司,可以根本解決此一問題並且協助到其他無辜的用戶。您可以前往 Cert.Microsoft.com 提供詳細資訊,微軟公司的安全團隊會進行審查,並且進行適當的處理。

    若需要更多安全性的資訊,請參考 Microsoft Azure Trust Center

  • 在 Azure 網站服務上架設 WordPress 的 10 個加速技巧

    原文發表於 10 Ways to Speed up your WordPress site on Azure websites

    速度慢的網站可能會造成您目標客群的流失,而且也會減少他們再次造訪網站的機會。許多搜尋引擎也將頁面載入速度列為排序的考量,這對於網站的能見度有很大的影響。如果您已經或正要使用 Azure 網站服務架設 WordPress,同時也想瞭解如何提升網站的載入速度,那麼下面的一些技巧是您可以考慮的方向。

    1. 網站服務與資料庫必須在相同的資料中心

    在 Azure 網站服務上架設 WordPress 時,不論是使用由 ClearDB 提供的 MySQL 資料庫服務或是 Azure 上的 SQL 資料庫服務,請一定要確認網站服務與資料庫要在相同的資料中心內,否則跨資料中心的網路傳輸會增加頁面載入的時間,所以將網站服務與資料庫放在同樣的資料中心是最好的作法。

    2. 盡可能不要依賴免費的 MySQL 資料庫方案

    雖然對於每個 Azure 訂閱來說,Azure 都有提供免費 20MB 的 MySQL 資料庫方案(SQL 資料庫服務也有),但這個方案比較適合開發測試評估使用,因為它有以下的限制:

    • 最多 20MB 的儲存空間。
    • 只能同時有 4 個資料庫連線。
    • 有限的運算資源

    我們建議您可以考慮 ClearDB 所提供的其它方案,或是在 Azure 市集中直接選購。如果 ClearDB 不能滿足您的需求,那麼您可以在 Azure 中建立一個虛擬機器,然後安裝運作一個 MySQL 資料庫服務,詳細的操作可以參考這篇文章

    3. 優化資料庫

    WordPress 在設計上會自動儲存所有的東西,但這對於資料庫來說會增加負擔來儲存大量的文章草稿、trackbacks 連結、留言、垃圾桶內容等等,於是您必須經常清理資料庫,以免過多無用的資源吃掉資料庫的儲存空間(也迫使您要選擇更高的價格方案)。

    WP-Optimize 是一個很棒的 WordPress 插件,它可以幫您定期清除資料庫中無用的內容,讓資料庫保持最佳的使用狀態,同時也幫助您省下去清理資料庫的時間。

    4. 壓縮圖片

    如果您的 WordPress 網站上有大量的圖片,這些圖片可能會吃掉不少頻寬流量,這時您有幾個選擇:

    • 使用 Azure Blob 儲存體來儲存圖片。您可以安裝 Windows Azure Storage for WordPress 這個插件,這樣就能讓 WordPress 中上傳圖片或檔案的操作直接上傳至 Azure Blob 儲存體中,而不是檔案系統中的 upload/ 目錄。使用 Azure Blob 儲存體除了節省流量、儲存空間以外,若有需要還可以再結合 Azure CDN 的服務來快取這些檔案。
    • 壓縮圖片WP Smush.it 這個插件很讚,它會自動壓縮您上傳的圖片,而且不會破壞圖像品質,當您有大量圖片時,這個插件幫您省下的儲存空間以及流量將會相當可觀。

    5. 減少 HTTP 要求

    當瀏覽器載入一個網站時,總會發出多個 HTTP 要求來讀取網頁內容、JavaScript、CSS、第三方函式庫等等,很多優化網站存取速度的建議都會提到這個問題,也會建議您將多個 JavaScript 或是 CSS 檔案合而為一以減少 HTTP 要求的數目。WordPress 的插件庫有很多這個功能的插件,例如 Better WordPress Minify 這個插件就蠻有效能減少 HTTP 要求數目,同時也能減少流量及頻寬。

    6. 診斷是否佈景主題拖慢網站

    有些佈景主題雖然很華麗,但是它可能也是拖慢網站速度的元凶,每次在換佈景主題時別忘了確認一下它是不是大幅拖慢網站的載入速度。

    7. 診斷是否有插件拖慢網站

    理由同上,寫得不好的插件可能也會拖慢網站,您可以使用像是 P3 這個插件來進行分析插件的效能,藉此找出拖慢速度的元凶,再評估是否要繼續使用這個插件或是找尋更好的替代方案。

    8. 關閉 trackback / pingback 的功能

    WordPress 預設使用 Pingbacks 以及 trackbacks 來提示您的網站正被別人引用(了解更多),不過這兩個功能也會消耗許多網站效能及速度,如果您覺得這個功能不是很必要的話,建議可以關閉。

    9. 設定明確的圖片大小

    瀏覽器在讀取網頁內容後會開始計算頁面的佈局,如果您在插入圖片時沒有輸入明確的圖片大小,瀏覽器會花更多時間來計算,所以最好的方式就是插入圖片時,明確地填入它的寬與高,讓瀏覽器可以更快計算完佈局,顯示頁面。

    10. 使用快取

    快取(cache)一直是提升效能的關鍵之一,網站大部份時間都是在讀取內容,使用快取可以減少網站運算或讀取資料的次數及時間,也會很有效提升效能,您可以考慮使用:

    • IIS output cache。由於在 Azure 網站服務上,網站伺服器的底層是用 IIS 為基礎所開發的,而使用 IIS output cache 這個功能將會很有效地快取您網站上的靜態檔案,詳細的操作可以看這篇文章
    • WP Super Cache。這個插件也可以很有效快���網站上許多內容,不過它的設定稍微複雜一點,可以參考這篇文章來設定。

    當然,加速 WordPress 網站的方法還有很多種,不過上面這 10 個技巧如果都應用在您的 WordPress 網站上,應該可以得到相當可觀的效能提升。