在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像
FreeBSD 基礎鏡像現已登陸中國的 VM Depot! 對于青睞 BSD 而非 Linux 的開源愛好者來說,這無疑是個好消息。同時,隨著該基礎鏡像的可用,我們期待很快看到更多來自社區的基于 FreeBSD 的開源鏡像,從而更加充實現有的可用 Linux 鏡像。
本教程將幫助您使用 VM Depot 鏡像快速上手 Azure 平臺上的 FreeBSD,具體操作包括:
設置要求
- Node.js
- Microsoft Azure 訂閱
更多詳細信息,請閱讀以下說明。若您已滿足以上要求,請直接跳轉至“在 Windows Azure 上創建 FreeBSD 虛擬機”部分。
Node.js?跨平臺命令行工具
盡管大部分工作可以在?Azure 管理門戶上進行,本例中我們還是使用跨平臺的 node.js 命令行工具。本教程只涉及很少一部分命令行工具。更多信息,請查看跨平臺 Azure 命令行工具使用文檔。
如果您使用的是 Mac 或 Windows 系統,您可以使用下面提到的 Node 包管理器(NPM),或者選擇您使用平臺(Windows或Mac)自身的安裝程序,然后直接跳轉至下一節內容。若您傾向于使用 NPM,請繼續閱讀本節內容。
登錄站點?node.js,點擊“安裝”按鈕,依照安裝向導的指示進行安裝。
當 node.js 安裝完成后,您需要打開命令提示符(Windows 系統下,需要以管理員身份打開),輸入“npm install azure-cli –global”命令來安裝命令行工具。
Azure?訂閱
您需要具備有效的 Azure 訂閱。若沒有,請點擊此處獲取試用賬號。
獲取 Azure 訂閱之后,您需要使用命令行工具(“azure login”)來登錄此訂閱。本教程直接導入了訂閱證書,所以您在操作中無需登錄。
在命令提示符下運行“azure account download –e AzureChinaCloud”命令。這時您的瀏覽器中會彈出一個網頁,驗證您的賬號之后,就開始下載您的賬號證書。保存這個證書文件,然后運行“azure account import [path]”命令,將賬號詳細信息導入命令行工具。
如果您的 ID 關聯兩個或兩個以上的訂閱,請確保正在使用正確的訂閱。若想查看哪個訂閱是當前有效的,請運行“azure account show”命令。
若想變更已選訂閱,使用“azure account list”命令列出所有有效訂閱,然后使用“azure account set [ACCOUNT]”命令設置一個有效訂閱。
在 Windows Azure 上創建 FreeBSD 虛擬機
完成初始設置之后,您就可以在 Azure 上創建 FreeBSD 虛擬機。本教程中,我們使用的是 FreeBSD 鏡像。實際上,VM Depot 上的任何鏡像都可以使用同樣的流程。
若想找到 VM Depot 上的 FreeBSD 鏡像,在?VM Depot 網站搜索“FreeBSD”即可。
點擊鏡像說明右方的“部署腳本”鏈接,同意相關條款并選擇部署區域之后,文本框中就會出現部署該鏡像所需使用的命令。
復制這個命令到您的外殼程序,并將“DNS-PREFIX”替換為能您機器的 ID 前綴,如“mydnsprefix.cloudapp.net”。記得要使用您自己的用戶名和密碼。您也可以在命令中包含“--ssh”選項,以確保啟動了 SSH 且端口 22 已打開。
有不少配置項可通過命令行進行設置。本教程中,我們將使用它們的默認設置。更多信息,請參考命令行工具文檔。
示例中使用的命令是“azure vm create rgfreebsd3 -o vmdepot-36254-2-1 -l "West US" rgardler Pa$$Word123 –ssh”。您可以運行您自己的命令版本。
命令完成之后,虛擬機鏡像就創建完成了。但是還需要稍等幾分鐘,它才能完成啟動。您可以使用“azure vm list”命令來監控狀態。當您的虛擬機狀態變為“ReadyRole”時,就可以進行下一步操作了。
自定義您的 FreeBSD 虛擬機
現在,您有一臺空白的純 FreeBSD 虛擬機運行在 Microsoft Azure 上。您可以通過 SSH 連接到這臺機器,執行您想做的操作。本教程中,我們將添加Jetty作為 Web 服務器和 javax.servlet 容器。
首先,您需要使用 SSH 登錄到服務器,這時會使用到您在創建虛擬機時定義的用戶名和密碼。本例中,我們使用“ssh rgfreebsd3.cloudapp.net -l rgardler”命令登錄。
若想使用 FreeBSD 包管理器安裝 Jetty,只需運行“sudo pkg install jetty”命令。為了確保 Jetty 伴隨虛擬機的開機而啟動,要在 /etc/rc.conf 文件中添加‘jetty_enable="YES"’,并使用“sudo cp /usr/local/jetty/etc/jetty.xml /usr/local/etc/jetty.xml”命令復制默認的配置文件。
理想情況下,您應該重啟虛擬機,測試是否設置成功。如果想節約時間,您也可以使用“sudo /usr/local/etc/rc.d/jetty start”命令手動啟動 Jetty,然后使用“exit”命令退出虛擬機。
您需要確保外部設備可以接入您的新服務器。HTTP 流量一般通過端口 80 進行傳輸。默認情況下,它在您的虛擬機上處于關閉狀態,您需要將它打開。打開端口的命令為“azure vm endpoint create rgfreebsd3 80 8080”(請確保您的機器名稱正確)。這樣就把公用端口 80 映射到了專用(虛擬機)端口 8080,后者是 Jetty 的默認端口。
現在,您可以訪問創建虛擬機時定義的 URL(如?http://DNS_PREFIX.chinacloudapp.cn),以驗證瀏覽器工作正常。如果一切正常,將會彈出 Jetty 的標準主頁,如下圖所示:
與 VM Depot 社區分享 FreeBSD 鏡像
自定義 FreeBSD 鏡像之后,讓我們通過 VM Depot 與社區重新分享這個鏡像。您希望每個人都能從您的工作中受益,不是嗎?這時要注意,您在 VM Depot 上通過 Web 表單發布鏡像之前,還需要完成一些準備步驟。
首先您需要取消虛擬機配置。這樣做會停止 Azure Agent,清除 SSH 密鑰和啟動密碼,并刪除網絡配置。為此,請再次通過 SSH 連接到虛擬機,運行“sudo waagent –deprovision”命令,然后使用“exit”命令退出虛擬機。
現在,使用命令行關閉虛擬機,并捕捉其鏡像。關閉虛擬機的命令為“azure vm shutdown rgfreebsd3”。
捕捉已關閉虛擬機的鏡像,我們可以使用“azure vm capture rgfreebsd3 freebsd_jetty --delete”命令。要注意,“freebsd_jetty”是您分配給鏡像的名稱,您可以隨意命名。這里的“--delete”是必選項,它會刪除當前已停止的虛擬機。這是因為,目前尚不支持重新配置已捕捉鏡像的虛擬機。不過請放心,您可以根據捕捉的鏡像重新創建并配置虛擬機。
現在,您已獲得了一個可以創建新虛擬機的鏡像。我建議您在此階段不妨測試一下,以保證一切工作正常。當然,您也可以直接跳轉到下面的發布階段。
下面我們根據捕捉的鏡像來創建一個新的虛擬機,使用的命令與我們之前根據社區鏡像創建虛擬機的命令類似。唯一的區別是,我們不需要使用“-o”開關來識別社區鏡像,而是使用附著在訂閱上的鏡像。這里使用的命令是“azure vm create rgfreebsd4 freebsd_jetty -l "West US" rgardler Pa$$Word345 --ssh”。一定要使用前面運行“capture”命令時定義的鏡像名稱,選擇您自己的 DNS 前綴來替換“rgfreebsd4”,提供您自己的用戶名和密碼。
和之前一樣,您需要打開一個合適的端點,以便在您的虛擬機上接入 Jetty。命令與之前在虛擬機上使用的命令一致(但要使用新的 DNS 前綴),如“azure vm endpoint create rgfreebsd4 80 8080”。完成這一步之后,您可以在瀏覽器中訪問新的虛擬機(http://dns_prefix.chinacloudapp.cn)。同樣,這時會彈出 Jetty 的默認主頁,如下圖所示:
發布到 VM Depot
要將鏡像發布到 VM Depot,首先您要確保 VM Depot 應用程序可以讀取該鏡像。為此,必須將存儲虛擬機鏡像的 blob 設置為可公開訪問。與求之前操作一致, 我們將使用命令行來完成。當然,您也可以通過 Azure 管理門戶來實現這一要求。
操作之前,您必須知悉它存儲在哪里。使用“azure vm image show freebsd_jetty”命令來查看該鏡像的元數據。
?
為了實現 blob 的公開訪問,您需要 blob 這個存儲容器的密鑰,可以使用“azure storage account keys list <storage-account-name>”命令獲取。存儲賬號的名稱可以從剛剛查看的元數據中獲得,它是“MediaLink”URL 的第一部分。在上面的示例中,存儲賬號為“ajamepiblobs”。這里會顯示主次兩個密鑰,使用其中任何一個都可以。
獲取密鑰之后,您可以運行“azure storage container set <container-name> -p Blob -a <storage-account-name> -k <key>”命令,設置對“公共 blob”的接入控制。Blob 這個容器的名稱也包含在“MediaLink”的 URL 中,它是路徑的第一部分。本例中,容器名稱為“vm-images”。存儲賬號的名稱與上一步中使用的相同,密鑰也是您剛剛獲取的那個。
現在 VM Depot 就能讀取虛擬機鏡像了,您可以輕松地將鏡像發布到 VM Depot。
登錄到?VM Depot,點擊“發布”按鈕。這時會彈出一個表單,如下圖所示:
這個表單應當簡單明了。有一項稍微復雜的是要求填寫 VHD 的 URL。它應該是運行“azure vm image show freebsd_jetty”命令獲取的“MediaLink”URL。
鏡像在您選擇的所有區域內進行復制,會花費幾分鐘的時間。相關的狀態更新,您可在提交以上表單后彈出的網頁上查看。有關提交流程的更多詳細信息,請查看?VM Depot 幫助文檔。復制完成之后,鏡像就會出現在 VM Depot 上。這時,您就可以向大家宣布新的虛擬機鏡像已正式發布了。
陳陽
技術推廣師
微軟開放技術(中國)
本文轉載自: http://blog.csdn.net/leonchenzhy/article/details/41892245?
轉載于:https://www.cnblogs.com/sesexxoo/p/6190927.html
總結
以上是生活随笔為你收集整理的在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate的fetch
- 下一篇: 大数据批量插入小练习_SqlServer