文/欧阳克非 ACE开发者平台是一个基于云计算基础架构的网络应用程序托管环境,能帮助应用开发者简化网络应用程序的构建和维护,并可根据应用访问量和数据存储的增长进行扩展。ACE支持PHP、Node.js语言编写的应用程序,支持在线创建MySQL远程数据库应用等。 目前开发一个网站已不是什么复杂的工作,但网站运维,如服务器托管、防火墙设置、防黑客攻击等,却是很麻烦的事情。如果网站运营得比较成功,还要重新考虑网站的架构使其能应付快速增长的访问量。对于这些互联网创业者来说,ACE开发者平台就很有价值。用户只需要将开发好的网站代码上传到ACE上就可以运营这个网站,而且不需要考虑运维问题。并且ACE能在网站访问量快速变化时,弹性增加或者减少计算资源的分配,不需要开发者做任何处理。听起来是不是觉得运营网站轻松了许多? 成为ACE的应用开发者 基于ACE构建应用,需要先在 http://ace.aliyun.com网站上注册一个账户。目前ACE还处于测试阶段,需要用户在页面 http://ace.aliyun.com/create/apply上申请邀请码,获得邀请码之后就可以访问ACE网站了。 目前ACE支持PHP和Node.js两种开发语言,并且支持远程创建MySQL数据库。下面介绍ACE的使用。 使用入门 ACE的使用可分为如图1所示的四个步骤。 [caption id="attachment_9913" align="aligncenter" width="437" caption="图1 使用ACE的四个步骤"]
[/caption]
创建应用环境 用户输入网站名和二级域名即可创建一个应用环境(如图2所示)。目前ACE提供以aliapp.com为后缀的二级域名,也允许用户绑定顶级域名。创建成功后,系统会创建一个FTP空间和一个MySQL远程数据库供开发者使用。 [caption id="attachment_9916" align="aligncenter" width="247" caption="图2 快速创建ACE应用服务"]
[/caption]
通过FTP上传代码 用户写好的PHP或者Node.js代码,可以通过FTP上传部署到ACE中去。出于安全角度的考虑,有许多函数被禁止使用,在编写代码时要特别注意。禁用函数列表参看 http://ace.aliyun.com/index/help/?help_id=87&sort_id=13 应用程序文件的调试 用户可以通过打开管理中心的调试选项,查找代码中出错的部分,进行调试修改。 发布应用程序 借助管理中心启动应用程序,就可以通过设定二级域名或者绑定的顶级域名访问自己所编写的网站。 将网站移植到ACE平台 ACE平台上的开发对于PHP和Node.js的开发者来说是很容易上手的,由于语法规则相同,这里就不再赘述。只是如上文所说,出于安全角度的考虑,许多PHP函数被禁用。为了解决这个问题,ACE提供对许多原生函数API的兼容以及一些新的编程方法来绕过函数的禁用问题。下面以PHPWind的移植为例介绍ACE平台上的开发。 文件、目录读写 出于安全方面的考虑,ACE对本地文件读写进行了一些限制,要求将用户数据放在OSS(开放存储服务,具备高可靠性及可扩展性的海量数据存储)中,并且文件读写都需使用ACE提供的统一接口。ACE支持创建用户数据目录,也支持创建源代码文件上的目录。PHP自带的fread、fwrite已被ACE默认关闭,请使用以下方法实现: < ?php Class CeFile{} Function write($fileName, $content, $sync=0) 文件写入 $fileName  文件路径(相对路径) $content  文件内容 $sync    是否需要同步到所有Web端,为保证多个Web端数据同步,默认设为0 返回 true|false Function read($fileName) 读取文件内容 $fileName 文件路径(相对路径) 返回文件内容|false Function delete($fileName) 删除文件 $fileName 文件路径(相对路径) 返回 true|false 成员变量errno 为错误代号 成员变量errmsg 为返回的错误信息供调试时使用 ?> ACE文件读写方法如下: //创建cefile对象 $ce = new CeFile(); //文件写入 $ce->write($fileName, $content, $sync=0); //读取文件内容 $ce->read($fileName); //删除文件 $ce->delete($fileName); 文件缓存部署 文件缓存的主要目的是把经常访问的数据保存在本地文件中,当有请求访问时,直接将数据调出,避免了再次请求数据库的I/O操作,减少了数据库的负载压力。 ACE给每个应用默认部署两个实例,当有请求访问时,该请求就会路由到其中的一个实例。ACE具有伸缩性,随着请求的增加或减少可以增加或减少实例。为了提高性能,ACE也具有文件缓存功能,如缓存配置信息。当用户修改配置文件时,应调用文件缓存功能,实现多个实例间配置信息的同步。 因此应用中若用到文件缓存,必须使用ACE提供的文件读写接口,使用方法同文件读写。在使用文件缓存部署时,应将write方法的$sync同步参数设置为1。 Memcache缓存部署 Memcache缓存部署是ACE为开发者提供的分布式缓存服务,以共享方式缓存用户key-value形式的小数据,从而加快数据响应速度,减轻后端数据处理的压力。ACE环境下的Memchae默认为开启状态。若用户需要使用Memcache缓存,请注意以下事项。ACE支持的Memcache API如下: bool Memcache::init () array Memcache::get ( array $keys [, array &$flags ] ) bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] ) bool add ( string $key , mixed $var [, int $flag [, int $expire ]] ) bool replace ( string $key , mixed $var [, int $flag [, int $expire ]] ) bool decrement ( string $key [, int $value = 1 ] ) bool increment ( string $key [, int $value = 1 ] ) bool delete ( string $key [, int $timeout = 0 ] ) bool close () 应用如果使用Memcache缓存,就必须使用ACE提供的Memcache缓存接口。Memcache缓存的使用方法如下: < ?php //连接 $mem = new Memcache(); //创建Memcache对象,内部会访问agent获取地址及ID $mem->init(); //保存数据 $mem->set('key1', 'This is first value', 0, 60); $val = $mem->get('key1'); //替换数据 $mem->replace('key1', 'This is replace value', 0, 60); $val = $mem->get('key1'); //保存数组 $arr = array('aaa', 'bbb', 'ccc', 'ddd'); $mem->set('key2', $arr, 0, 60); $val2 = $mem->get('key2'); //删除数据 $mem->delete('key1'); $val = $mem->get('key1'); 文件上传 通过Web上传的文件都是基于OSS存储的,由于ACE平台的限制,其上传的文件不能存储在本地,只能存储在OSS中,且必须使用ACE提供的上传文件接口,文件上传后会生成对应的URL。PHP自带的move_uploaded_file方法已不能使用,需要使用ACE提供的方法。 文件上传方法如下: move_uploaded_file($tmp_name, $filename) 替换为: $ce = new ACEStorage(); $result = $ce->upload($tmp_name, $filename); #$rs1 = $ce->errmsg(); //输出错误信息 #$rs2 = $ce->errno(); $result为返回的附件文件路径,可直接访问,如: www.domain.com/aliyun_ce_storage/$filename 展望未来 本文旨在引导用户轻松运用ACE开发出复杂的网站应用,同时免除运维和系统弹性扩展的烦恼,节省人工成本、硬件投入成本以及时间成本。在不久的将来,ACE将支持更多的语言,例如Java等,也将提供更多的服务,例如版本管理、客户端支持、URL网页抓取等,以帮助用户在ACE平台上开发出功能更强、更复杂的互联网应用。 本文选自《凌云》杂志第1期,更多精彩内容敬请关注《凌云》专区 《程序员》2012年杂志订阅送好礼活动火热进行中  
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐