这篇文章介绍各种部署网站上Windows ">Azure 的方式,不过由于虚拟机服务(Windows Azure Virtual Machines)的部署方式是完全自己设定的,所以这里主要介绍的是网站服务(Windows Azure Websites)的各种部署方式以及如何用 Windows Azure SDK 的工具来进行部署应用程序至云端服务(Windows Azure Cloud Services)。
部署至网站服务 (Windows Azure Websites)
Windows Azure 网站服务提供了多种部署网站的方式(如:FTP/WebDeploy/TFS/Git/Mercurial/Dropbox 等),让您可以自由选择熟悉的部署方式。而将 PHP 网站应用程序部署至网站服务时,有两件事情必须先了解:
虽然 Windows Azure 网站服务无法修改 php.ini 档案对PHP执行环境做设定,但您依然可以在网站的根目录下使用 .user.ini 档案(别忘了最前面是 . 开头)来做设定,设定的方式与 php.ini 档案完全一样,这样便可以依据需求来自定义调整,而且不会影响到其它的 PHP 网站应用程序的设定。
有的函式库可能需要使用到网站的实体路径,网站的根目录实体路径为:「C:\DMASFiles\Sites\<网站名>\VirtualDirectory0\site\wwwroot\」。
接下来便能开始了解每一种部署网站的方式。
使用FTP上传网站
使用FTP上传是最简单的部署方式,只要使用任何熟悉的FTP工具,把网站应用程序的所有档案上传到Windows Azure网站服务的磁盘空间上即可。而FTP上传的联机主机名、账号密码可以在网站后台的仪表板中看到:
在网站服务的后台仪表板里可以看到 FTP 联机信息
以这张图为例,FTP主机的名称是 waws-prod-hk1-001.ftp.azurewebsites.windows.net,用户名称是 phponwindowsazure\ericsk,联机密码的部份则是可以在「快速概览」的部份选择「建立您的部署认证」或是「重设您的部署认证」来设定。
这里要特别注意的是,使用 FTP 或 FTPS 连接成功后,网站的根目录是放在 site\wwwroot 目录下,而不是 FTP 的根目录。一旦文件传输完毕,网站服务就立刻以新的档案来提供服务。
使用版本控制机制(Visual Studio Online, Git, Github, Mercurial, bitbuckets, 甚至是 Dropbox)
在现代开发流程中,版本控制(version control)是很常见的机制,而在Windows Azure的网站服务中也支持使用版本控制的机制来进行网站的部署,它主要的支持方式为:
在 Windows Azure 网站服务上建立一个存储库(repository),将档案 push 至该存储库就会换上新版本作为上线的部署。目前支持使用 git 做这样的部署机制。
绑定一个在线版本控制服务的存储库,当有新的部署时,便会同步部署至 Windows Azure 网站,可以与原本的开发流程结合。目前支持此机制的服务有:Visual Studio Online、GitHub、Bitbuckets、Codeplex 或是自行架设的git/mercurial 服务器,甚至可以使用 Dropbox 的文件夹做类似的部署。
使用版本控制部署的好处,就是在于可以根据不同的 check-in 来切换部署网站的版本。比方说在 Windows Azure 网站服务上建立了一个 git 存储库,在 push 了两次到此存储库之后,便产生了两个可以部署的版本,并且在后台可以随时切换。
使用 git 推送两次之后,网站上产生两个部署
而针对每一种版本控制的部署方式,可以参考 Windows Azure 产品网站上的这篇教学文件:「Publishing from Source Control to Windows Azure Web Sites」。
部署至云端服务(Windows Azure Cloud Services)
如前一篇文章所述,Windows Azure Cloud Services 是一个基于 Windows Server 以及 IIS 的 PaaS(Platform-as-a-Service)的服务平台,它提供两种应用程序的执行环境:Web Role 及 Worker Role,前者就是像 Web 应用程序这样,应用程序的执行是经由 web request 所驱动的;Worker Role 则是可以让应用程序独立执行。而在部署 PHP 网站或应用程序时,也必须一并部署 PHP 的执行环境(因为平台上只有很干净的 Windows Server + IIS)。