Windows Azure 的網站託管服務:用 Git 部署你的 PHP/NodeJS 網站(使用 Mac OSX)

前一篇介紹了如何利用 Windows Azure 的網站託管服務來快速架設網站,對於開發人員來說,其實也可以利用這樣的服務,部署你的 PHP 或 NodeJS 網站,而且並不一定要使用 Microsoft 的開發工具,這篇文章將以在 Mac OSX 下的操作環境,搭配 git 來部署網站。

開啟 git 部署功能

前一篇文章中介紹了如何使用 Windows Azure 的管理介面來建立網站,在建立好網站後,便能夠在管理網站的 dashboard 中開啟 git 部署功能:


開始 git 部署功能

按下「Set up Git publishing」的功能之後,Windows Azure 便會開始為這個網站服務建立 git repository,看到下方的畫面就表示建立成功,可以準備開始部署了:


完成建立 git repository,準備開始部署

這個畫面也會顯示 git repository 的 URL,如果還沒安裝 git 的話,也可以參考下方的說明。

使用 git 部署網站

開啟 git 部署功能後,便可以在開發機上建立環境,首先建立一個 index.php 的檔案,內容如下:

 <?php
echo "Hello, world (from PHP on Windows Azure)";

接著,在你的開發機器上建立一個本地端的 git repository,並且完成第一個 commit:


建立本地端的 git repository

接下來,就是要將這個 commit 部署到 Windows Azure 的網站服務上,記住你網站服務的 URL,然後利用下方的指令將 remote repository 加入,並且把本地端的 commit push 上去:


部署到 Windows Azure

在 push 時需要你的 Windows Azure 部署帳號密碼,可以在管理介面中的 dashboard 來設定 credentials,如果設定過卻忘記了,可以 reset credentials 來重新設定:


設定部署的帳號密碼

git push 成功後便完成部署,這時可以打開網址來確認:


部署 PHP 網站成功

而當你 push 多個 commit 進入 repository 後,也可以在 Windows Azure 的管理介面(部署成功後,會在導覽列上多一個「DEPLOYMENTS」)切換上線的網站要使用哪一次的 commit:


從 repository 中選擇要上線的 commit

部署 NodeJS 網站的差異

若您是以 NodeJS 作為網站開發的程式語言,建立網站或是開啟 git 部署設定的方式都跟上述的方式一模一樣,不過由於 Windows Azure 是以 iisnode 的模組來執行 NodeJS 的應用程式,所以除了要部署的 *.js 檔案之外,還要加上一個 Web.config 檔案,用來告訴 iisnode 要以哪一個 js 檔案作為開始:

 (Web.config 檔案)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="false" />

    <!-- indicates that the server.js file is a node.js application 
      to be handled by the iisnode module -->
    <handlers>
      <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
    </handlers>
    <rewrite>
      <rules>
        <clear />
        <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="server\.js.+" negate="true" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
          <action type="Rewrite" url="server.js" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

你可以直接照抄這個檔案,不過要注意其中 <add name="iisnode" path...> 的部份(還有 <match url...>),這個例子是以 server.js 檔案作為 iisnode 預設執行的檔案,你可以將它換成你需要的檔名(如:使用 Express 開發框架就會想要換成 app.js

結語

Windows Azure 的網站託管服務,不僅可以快速建立網站之外,也可以搭配像是 OSX + git 的開發環境來部署你的 PHP 或 NodeJS 網站應用程式,如果這與您的開發環境相似,不妨試試 Windows Azure 吧!

有任何的問題,請到 Windows Azure 官方技術論壇來討論發問囉~