ACE开发者平台 - 基于阿里云引擎的应用托管平台

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