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

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