2012年9月13日

[Azure]Deploy two web applications in one WebRole (Full IIS Mode)

在開發Cloud Service的時候, 最常用的方式就是新增一到多個Web Role, 然後統一發布. 這樣的發布方式, 會在Azure的虛擬機器上產生多個Web Site.

image

這時我們必須透過不同的port來存取這兩個網站(預設是80和8080)

如果我想要在同一個Web Role裡, 發布多個Web Application該怎麼做呢?

首先打開ServiceDefinition.csdef檔, 正常來說會長這樣子. 可以看到定義了兩個Role, 每個Role各有一個Web Site, 第一個Site的Endpoint port是80, 另一個是8081

image

接著我們要來修改這個檔案. 首先把第二個<WebRole>刪掉, 這樣我們就會只有一個WebRole了.

然後我把第一個Site的physicalDirectory設為我的網站的專案目錄的絕對路徑, 這樣VS就知道這個網站的project file在哪裡.

image

接下來, 我想把第二個Web Application放到這個Site下成為一個Web Application. 因此, 在<Site>下新增一個<VirtualApplication> tag如下

<VirtualApplication name="GPServices" physicalDirectory="{Project Folder}"/>


同樣的, 這邊的physicalDirectory指的是第二個網站(GPServices)的專案目錄路徑



image



最後完成的檔案如下



image



這邊我仍然保留了第二個Site, 因此發布到Azure上時, IIS上仍然會看到兩個WebSite. 但是, 因為我已經將GPServices發布成一個Web Application, 因此, 我就可以用http://{url}/GPServices 的網址來存取第二個網站了.



連線到機器上看一下IIS, 確實就如我們所想要的方式.












image

沒有留言:

Blog Archive

About Me