如何使用Azure云服务和SQLDatabase部署PHP应用
综述:
本文介绍如何将一个PHP语言实现的Web应用在Azure平台部署为云服务。该应用程序在后台选择SQLDatabase作为数据库层。本文介绍部署这样一个系统前期要考虑和设计的问题,同时给出部署中每一步骤的截图和讲解。读者可以根据本文中的步骤在Azure中实际部署一个可运行的PHP+SQLDatabase的应用程序。
什么是WindowsAzure云服务
当我们在Windows中建立一个应用程序,我们把这个应用程序的执行代码和配置环境统称为云服务(即CloudService)。在一个云服务中,我们往往要指定多个角色(role)来协同工作,这样既可以把不同类型的任务分配给相应的处理单元,也可以更好的实现系统的可扩展性。WindowsAzure定义了两种角色– Web Role和Worker Role。简单的说, Web Role就是带有IIS(Internet Information Service) 的服务器,通常作为前端服务器来接收并处理用户请求。Worker Role是不带IIS的服务器,用于处理一些后台任务。WebRole和WorkerRole之间可以通过Azure服务总线(service bus) 来通讯,也可以通过其它方式。要得到可用性为99.95%的微软服务等级协议,每一个角色至少要部署两个实例,互为备份。下图是一个经典的云服务应用架构:
Windows Azure SQL Database概述
SQL Database是Windows Azure平台的一个PaaS(Platform as a Service) 服务。它为用户提供类似SQL Server的数据管理服务,但对用户来说的用户体验不同于SQLServer。使用SQLDatabase,用户不必关心SQLServer的安装配置,包括未来的维护升级和扩容。只需通过WindowsAzure管理界面创建一个SQLDatabase即可使用。Azure平台会对数据库系统的维护和扩展进行自动处理。
应用程序部署
建立数据库
首先我们通过Windows Azure管理平台建立一个SQL Database实例。
-
登录Windows Azure管理平台,选择SQL数据库,点击“快速创建”。
-
数据库创建成功后,进入这个数据库的“仪表盘”,选择屏幕右边的“显示连接字符串”。这里显示了使用各种语言连接该数据库的连接字符串,我们将PHP的连接字符串拷贝出来,将来在PHP程序中使用。
使用WindowsPowerShell创建云服务项目
-
使用管理员身份打开Windows PowerShell,执行New-AzureServiceProject<ProjectName>
-
创建两个Web Role.
-
为这个云服务指定属性.
编辑PHP文件
数据库连接
下面是在PHP中连接SQL Database的示例代码,其中的连接字符串来自SQLDatabase仪表盘上的连接字符串。
-
使用到的其他P如何使用Windows Azure云服务和SQL Database部署PHP应用HP外界库
在上面的程序中,我们用到了PHP连接SQLServer的外界库(php_mssql.dll)。我们需要在本地的项目中webrole的bin目录下,创建php/ext目录,并把DLL链接库拷贝到该目录下。在本例中的目录如下:
同时,我们需要在php目录下创建php.ini文件,并在文件中添加如下内容:
extension = php_mssql.dll.
最后,我们只要调用PowserShell命令: Publish-AzureServiceProject即可把应用程序发布到Azure平台上。
总结
当我们在移植应用程序之前,需要考虑该程序适合什么样的Azure技术。对一个大部分Web应用来说,移植到Azure都有三种选择:虚机,网站和云服务。我们首先要在这三种方案中做出选择。如果该应用必须使用Linux操作系统,那我们只能选择虚机。否则,我们可以在网站和云服务之间做出选择。网站是最方便的,但它也带给用户很多限制,例如不能访问后台的服务器,不能修改IIS服务器的配置等。通常来说,我们建议客户在条件具备的情况下选择云服务。云服务包含一套完整的应用程序管理,并且提供了“预演系统”和“生产环境”两套系统,非常符合具有一定规模的应用程序开发流程。下面的决策树可以帮助我们做出选择:
另外,当应用系统部署成功以后,我们应该持续的对系统架构进行调优。在这个阶段,我们建议客户做如下的工作: