云服務是通過兩個文件進行發布的,一個是cspkg,包含所有程序代碼,一個是cscfg,包含配置信息。如果要在云服務的虛擬機上安裝軟件或者拷貝文件,簡單的做法是把要裝的軟件和文件打包在cspkg里面,然后在csdef里面定義啟動腳本,進行軟件的自動化安裝或者文件拷貝。下面看一個簡單的例子
比如我們要把一個test.dll文件拷貝到目標虛擬機的系統目錄下,而不是僅僅放在Webrole/worker role的缺省目錄下,那么我們需要這樣做:
首先,把這個dll放到Azure Role的代碼目錄內,比如web role/worker role的根目錄
查看文件屬性,確保生成操作為“內容”
如果當前是workerrole,還需要將待拷貝的文件復制屬性改為“較新則復制”。這會讓該文件復制到bin目錄下,而Bin目錄會成為worker role的approot。而Web role則不需要修改,因為Web role的app root就是項目根目錄
此時如果我們打包該項目,然后將輸出的cspkg解壓縮,可以發現該文件出現在了目標role的approot目錄下
接下來,我們需要讓Azure進行文件的自動拷貝。打開項目的csdef文件,找到相應Role的定義,添加<startup>段落,定義拷貝命令
<WebRole name="GuestBook_WebRole" vmsize="Small"> .... .... .... <Startup> <Task commandLine="copy test.dll %windir%" executionContext="elevated" taskType="simple" /> </Startup> </WebRole>其中,executionContext是執行權限。如果是elevated,表示以管理員權限執行,如果是limited,則以普通用戶權限執行
至此,我們再發布該應用,就會實現test.dll的自動拷貝。如果要安裝應用程序,可以把startup定義里面的commandline換位應用的靜默安裝命令。一般的應用都支持靜默安裝,命令一般為 xxxx.exe /silent。具體參數可以通過xxxx.exe /?查詢
有時候commandline沒有這么簡單,不能寫到一行里面。此時最好單獨創建一個setup.cmd腳本文件,將需要執行的命令寫好。然后在startup的commandline里面寫setup.cmd.該腳本文件的放置方法跟前面test.dll相同。
由于每次發布都需要上傳cspkg,顯然cspkg不能太大。如果要打包的安裝程序或者文件太大,那么不建議把他們和cspkg打包在一起,而是事先上傳到Azure的Blob存儲上,然后在startup腳本里面進行文件的下載
把文件進行事先上傳很簡單。那么怎么在startup腳本里面進行下載呢?我們需要一個工具進行文件的下載
將這里的壓縮包(http://download.csdn.net/detail/shaunfang/5390215)解壓到本地Azure項目的目標Role根目錄下,確保文件屬性的生成操作為“內容”。如果是worker role,需要修改復制屬性為“較新則復制”
這里包括幾個文件,分別是Blob的客戶端dll,下載和解壓縮腳本等
然后,在role根目錄下創建一個download.bat的文件,里面填寫下載、解壓縮和安裝代碼:
cmd /c util\wash.cmd blob download "ImageMagick-6.8.0-vc9.zip" "ImageMagick-6.8.0-vc9.zip" phpsetup filestore "xxxxxxxxxx" cscript /NoLogo util\unzip.vbs "ImageMagick-6.8.0-vc9.zip" . copy ImageMagick-6.8.0-vc9\* "%ProgramFiles(x86)%\PHP\v5.3\"其中,第一行是進行文件的下載。"ImageMagick-6.8.0-vc9.zip"是文件名,phpsetup是container名,filestore是存儲賬號名,最后是存儲的密鑰
第二行是zip解壓縮
第三行是文件拷貝
之后,修改startup的commandline為download.bat即可。在正式發布服務前,可在本地先手動執行下download.bat,看看能否正確下載安裝
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
