购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 SAE环境搭建

Sina App Engine(SAE)是新浪公司(sina.com.cn)推出的一款云应用引擎,自2009年11月问世后,SAE一直受到开发者的青睐。到2013年11月止,SAE已经有近40万开发者,共托管了约56万个应用。一些成熟的软件和框架,如WordPress、CodeIngiter、YII等,都被移植到SAE。其中WordPress的安装次数已经超过11万,异常火爆。

SAE现在支持多种语言如PHP、Java、Python,采用不同技术的开发者都可以使用SAE服务。除了网页应用,SAE也有移动云平台,可以开发移动应用。

SAE吸引了大量的开发者。SAE体现了新浪的一贯作风:一流客服+一流运营,就易用性和稳定性而言,要远远超过其他竞争者。

这里从应用创建、搭建本地开发环境和SAE常用服务等方面,介绍如何搭建基于SAE的开发环境。

3.2.1 应用创建

1.注册账号

SAE采用新浪微博账号体系进行登录,所以你需要有一个新浪微博账号或邮箱即可。

进入SAE官网(http://sae.sina.com.cn/),在页面顶部右上角可以看到“注册”链接,如图3-6所示。

图 3-6

进入了“SAE新浪云计算平台”的登录页面。如果你已经有新浪微博账号,在此页面输入账号和密码,点击“登录”即可,如图3-7所示。

如果你还没有新浪微博账号,请先点击右上角的“注册”链接,用邮箱注册一个新浪微博账号,再返回此页面进行登录。

登录后进入授权页,点击“授权”按钮即可完成注册,如图3-8所示。

图 3-7

图 3-8

至此,你已经完成了SAE的注册,SAE的账号就是你的微博账号。

2.使用SVN部署代码

SAE有四种代码管理方式:在线安装应用、在线编辑、本地开发环境上传和SVN部署。

在线安装应用的方式,适用于安装SAE应用仓库(http://sae.sina.com.cn/?m=appstore)里的Web应用和开发框架,安装后可以直接使用。这类应用包括开源博客系统WordPress、开源PHP框架CodeIgniter、Yii和ThinkPHP等。后续需要修改代码,可以通过在线编辑和SVN等方式实现。

为方便用户在线编辑代码,SAE提供了在线编辑器,通过在线编辑器可以创建、编辑、上传代码和文件。在线编辑器可以在应用的“代码管理”部分找到,如图3-10所示。如果通过在线代码编辑器对代码进行修改、部署等操作,也会和执行svn commit一样,产生一个新的提交,即可以使用SVN客户端执行svn update获取最近的更新或其他操作。

图 3-9

图 3-10

本地开发环境见3.2.2节。

这里推荐SVN部署,其优势在于,对代码的任何修改都有记录,可以回退到任意历史版本。

在Windows下开发应用,推荐使用Tortoise SVN客户端,下载地址为:http://tortoisesvn.net/downloads.html。应用对应的SVN配置如下:

·SVN仓库地址:https://svn.sinaapp.com/YOUR_APP_NAME

·SVN用户名:SAE安全邮箱

·SVN密码:SAE安全密码

完成了账号申请和SVN安装,接下来就可以开始创建第一个应用了。

首先登录SAE,访问我的首页(http://sae.sina.com.cn/?m=dashboard),单击“创建新应用”按钮,如图3-11所示。

页面会弹出提醒,禁止创建包含违法、违规或“擦边球”内容的应用,如图3-12所示。

图 3-11

图 3-12

填写二级域名、应用名称等,单击“创建应用”按钮,应用就被创建了,如图3-13所示。所填写的域名就是应用的访问地址。需要注意的是应用创建后,二级域名和开发语言不可修改,请慎重填写。

图 3-13

现在选择你的本地工作目录,如G:\sae。单击鼠标右键,在弹出的菜单中选择“SVN Checkout”命令,如图3-14所示。

图 3-14

在弹出页面中填写仓库路径,如:https://svn.sinaapp.com/weixinproject100(其中weixinproject 100是刚创建的应用名称),如图3-15所示。

图 3-15

单击“OK”按钮开始执行update操作,如果是第一次使用会弹出Authentication窗口进行身份验证(另外,如果不希望每次使用都进行身份验证,可以勾选“Save authentication”复选框),如图3-16所示。

图 3-16

·username:注册SAE时填写的安全邮箱(并非微博账号)

·password:注册SAE时填写的安全密码(并非微博密码)

身份验证成功后SVN会自动将应用同步到本地工作目录中并创建以应用命名的文件夹。

接下来需要创建一个版本,在该文件夹中创建一个新的文件夹作为这个应用的版本(注意文件夹的名称就是应用的版本号,必须是正整数)。

现在可以使用你最喜欢的编码工具(如:EditPlus、Notepad++等)在该文件夹下创建你的第一个页面,如index.php(如果你创建的是PHP应用),文件内容如下:


<?php
echo ' Welcome to SAE!';
?>

完成后,该文件左侧会出现一个红色的“!”,右键单击该文件,在弹出的菜单中选择“SVN Commit...”,执行提交操作,如图3-17所示。

图 3-17

在弹出窗口的Message处填写更新的理由,点击“Ok”,即可完成代码的上传。

现在,在浏览器中输入应用的地址,就可以马上访问。本例地址为http://weixinproject100.sinaapp.com(其中weixinproject100为应用名称),如图3-18所示。

图 3-18

3.2.2 搭建本地开发环境

为方便开发者测试开发,SAE提供了本地开发环境。它们能模拟SAE的大部分功能和服务,在本地开发环境中进行开发调试,无须频繁地上传代码,不但节省时间,而且减少调试程序时调用SAE服务造成的云豆消耗。

SAE本地开发环境集成了Apache、PHP、Redis等服务,又用PHP文件模拟SAE的Storage、KVDB、FetchURL等服务。这是一个绿色软件,解压缩之后可以直接运行。值得注意的是,该软件没有集成MySQL,如果在开发应用时用到,需要自行配置;该软件没有可视化界面,只有命令行方式。目前版本为1.3.0,仅支持Windows操作系统。

1.下载与环境初始化

SAE本地开发环境可以在SAE公共资源加速网站(http://lib.sinaapp.com/)获取,点击页面底部的“SAE Local Environment(Windows)”链接即可下载。

下载到本地的文件是SAELocalEnvironment-windows-1.3.0.zip,解压缩后看到的文件目录结构如下:


bin             <DIR>#
可执行文件/
程序目录,Apache
、PHP
、Redis
等都在此文件夹下 
emulation       <DIR>#
环境模拟文件,用来模仿SAE
环境,包括FetchUrl
、Storage
等 
storage         <DIR>#storage
存储目录 
tmp             <DIR>#
临时目录 
wwwroot         <DIR>#
根目录,网站代码应放在此处 
changelog            #
变更历史 
init.cmd             #SAE
环境初始化脚本 
readme               #
帮助文本,介绍环境的常见命令 
sae.conf             #SAE
配置文件,可配置Apache
、Redis
、MySQL
等参数 
tool.cmd             #SAE
本地模拟环境数据清理工具 

运行本地开发环境只需要执行“init.cmd”脚本即可。如果你所使用的是Windows XP操作系统,请确保当前登录用户是计算机管理员;如果为Win7、Vista、Win8、Win8.1等,需要使用管理员身份运行,如图3-19所示。

图 3-19

“Init.cmd”脚本的运行场景如下,可以看到启动了Apache和Redis等服务。当Windows命令行界面出现“LocalSAE>”字符时,就表示SAE本地模拟开发环境启动成功,可以使用了,如图3-20所示。

2.常用应用管理命令

现在我们要创建一个名为“demo”的应用,步骤大致为:创建应用→选择或切换应用→创建版本→更新配置文件(可选)。

图 3-20

(1)创建应用

命令如下:


LocalSAE> capp demo 
应用创建成功 

创建成功后,wwwroot目录下自动增加了一个名为“demo”的文件夹。

(2)选择或切换应用

因为可能同时存在多个应用,所以使用前需要切换到当前开发的应用。


LocalSAE> use demo 
已切换当前应用 

如果想查看当前选择的应用,可以用sapp命令。


LocalSAE> sapp demo 

(3)创建版本

版本的意义在于你的应用可以同时以多个面目存在,推出新版本时又需要保留旧版,这种情况下多版本就很有必要。SAE最多允许创建10个版本,并且版本号必须为正整数。运行以下命令:


LocalSAE> cversion 1 
创建版本成功 

在你的应用目录下,会添加名称为“1”的文件夹。

还可以设置一个默认版本,当用户访问时,会首先呈现默认版本。


LocalSAE> defver 1 
设置默认版本成功 

同时可以查看当前默认版本号:


LocalSAE> sversion 1 

(4)更新配置文件

由于你的操作会更改config.yaml文件,完成以上步骤后,需要更新config.yaml文件,保证你的操作生效。

更新单个版本的配置文件:


LocalSAE> upconfig 1 
config.yaml
文件更新成功 

更新应用的所有版本下的配置文件:


LocalSAE> upallconfig 
demo
应用的config.yaml
文件更新成功 

至此,我们创建了一个名为“demo”的应用,默认版本号为1。按照SAE的路由规则,我们可以通过demo.sinaapp.com或1.demo.sinaapp.com访问刚才创建的应用。

要在本地访问,是否要配置HOSTS?

打开HOSTS文件(默认位置在C:\Windows\System32\drivers\etc\hosts,如果没有请查看%Systemroot%\System32\drivers\etc\hosts,其中%Systemroot%指系统安装路径),发现SAE已经给配好了。


127.0.0.1 demo.sinaapp.com 127.0.0.1 1.demo.sinaapp.com 

在浏览器中打开1.demo.sinaapp.com和demo.sinaapp.com,发现SAE已经在欢迎我们了,如图3-21和图3-22所示。

图 3-21

图 3-22

3.2.3 SAE常用服务

SAE的常用服务包括云计算类和云存储类,前者解决程序运行问题,后者解决数据存储问题。

1.SAE云计算类服务

云计算有两个重要的特点:

·分布式。将大量廉价的计算机通过共享网络(如互联网)连接起来,共同运行程序或应用。

·弹性计算。云计算提供的服务应该能根据用户的资源使用量动态调整,而用户只需为自己使用的资源付费。

为此SAE提供了多种云计算服务来满足各种场景业务的需求。

(1)Cron:定时服务

Cron服务是SAE为开发者提供的分布式定时服务,用来定时触发开发者的特定动作。Cron的应用场景主要是让用户可以在指定的时间执行一些计划任务,可以分为两类:

·每隔一定时间执行,例如每30分钟更新一下排行榜。

·在某个特定时间点执行,例如每天0点备份数据库。

(2)Image:图像处理服务

Image是SAE为开发者提供的分布式图像处理服务,用来同步地对图片进行CPU密集型操作。Image服务封装了一些常见的图像处理方法,包括缩放、水平翻转、垂直翻转、裁剪和添加文字/图片水印等,可以满足一般需要。

(3)FetchURL:网页抓取服务

FetchURL是SAE为开发者提供的分布式网页抓取服务,用来同步抓取http页面。

FetchURL主要用于发起http请求,包括get和post,并且支持https和重定向。

(4)Mail:邮件发送服务

Mail是SAE为开发者提供的分布式邮件发送服务,用来异步发送标准SMTP邮件。Mail常见的应用场景是注册账号时发送确认邮件、发送订阅内容等。

(5)TaskQueue:任务队列服务

TaskQueue是SAE为开发者提供的分布式任务队列服务,用来以异步HTTP方式执行用户任务。SAE提供了顺序队列和并发队列,顺序队列的任务顺序执行,而并发队列中的任务则以并行的方式执行。对于没有数据关联的任务,可以使用并发队列来批量处理。

(6)DeferredJob:离线任务服务

DeferredJob是SAE为开发者提供的分布式重量级的长时间离线任务执行队列。DeferredJob通常用于没有截止时间限制、数据量大并且运行时间较长的任务,例如用户的数据库大文件导入/导出、数据库批量操作等。同样是任务队列,DeferredJob与TaskQueue差别很大,这里做一个比较,如下表所示。

(7)Channel:实时消息推送服务

Channel是SAE为开发者提供的实时消息推送服务,用来支持实时性较高的应用,如游戏、在线聊天室、在线直播等。Channel服务在2014年2月14日正式对外开放。

2.SAE云存储类服务

云存储是与云计算密切相关的一个重要研究方向。与云计算一样,优秀的云存储平台需要具备以下几个条件:

·安全。这是云存储的首要要求。数据不能被授权之外的人或机器窃取,并且保证数据完整。

·透明化。当用户通过云存储平台读取或存放数据时,只须通过平台提供的接口去读写,无须关心数据存储在哪块物理磁盘,也无须担心物理磁盘是否已满等。

·按需分配。用户只为自己使用的服务付费。举例来说,某用户存储数据用了20M空间,那他只用支付20M空间的钱,肯定不会花费一个磁盘的钱。

·动态服务。动态意味着可扩展。例如,一个刚上线的产品,前期访问人数较少,这时所需的云计算和云存储资源也较少;某一天,运营人员发起了一个给力的营销活动,访问人数暴增。这时平台需要有可扩展性,来应对突如其来的流量。

作为优秀的应用引擎,SAE提供了多种云存储类服务,包括MySQL、Storage、Memcache、KVDB、Counter和Rank,对企业用户还提供CDN服务。

图3-23是SAE云存储类服务的结构图。从是否为关系型数据库来分类,云存储类服务可分为关系型数据库和非关系型数据库。从严格意义来说,Memcache、Counter和Rank不算是数据库。

图 3-23

SAE上的关系型数据库是MySQL。SAE上的MySQL服务和普通MySQL服务几乎一样,所以你可以按照常规的MySQL使用方法来使用。

非关系型数据库即近年来得到广泛关注和发展的NoSQL。NoSQL是Not Only SQL的简写,意为“不仅仅是SQL”。它不是单纯地反对关系型数据库,而是强调根据应用所需业务的不同,灵活地采用键值、文档、图形关系等数据库的优点,来达到高并发(High Performance)、大存储(Huge Storage)、高可扩展性和高可用性(High Scalability & High Availability)的目的。下面对SAE的几个非关系型数据库做一个简介,详细分析见后续各章节。

Storage属于文档型数据库,从SAE早期文档中可以看到,其存储系统采用著名的文档型数据库MongoDB的GFS文件存储(MongoGFS)。Storage为开发者提供分布式文件存储服务,用来存放用户的持久化存储的文件,例如用户上传的图片、附件等。

KVDB属于键值型数据库,类似于Redis,提供分布式键值数据存储服务。据SAE文档所述,KVDB对每个用户可支持100G的存储空间,可支持10亿条记录,并且高性能高可靠,读写可达10w qps。

Memcache为开发者提供分布式缓存服务,主要用于缓存程序中经常读取又在一段时间内不变的数据,其使用与标准的Memcache一致。

Counter为开发者提供计数器服务。例如中国好声音网上投票,每秒钟有数以万计的人参与,这时要求云存储具有在高并发情景下处理计数的能力。Counter简化了计数应用的开发,通过API即可对计数器进行加减操作,得到统计结果。

Rank是为开发者提供的分布式环境下的排行榜服务,其特点是快速可靠,可以用于实时环境。利用Rank服务可以轻松地实现热门文章排行、用户活跃度排行等。 yK3eQXFUvyAzVgFgduwtkqZoDFzxlJzby/m9nO4PN8zLyCj7qw5mvbithbnMxh5S

点击中间区域
呼出菜单
上一章
目录
下一章
×