准备工作
使用BAE平台必须具备以下条件:
1.具有百度帐号
如果您还没有百度帐号,请先登陆https://passport.baidu.com/?reg& 注册成为百度用户,红色提示部分为必填内容。
2.注册成为开发者,开通BAE权限
如果您已经拥有了百度帐号,但是还未成为开发者,请先注册成为百度应用开放平台的开发者,并开通权限。
BAE平台使用概述
在开通BAE权限之后,开发者就可以使用开发平台了。在BAE开发平台上,开发者可以创建应用程序、创建程序的版本、进行版本管理、利用平台提供的服务来开发程序、查看程序的各种信息以及删除程序。
目前BAE提供了两种方式来创建一个版本:打包对接方式和创建新版本。
对每个程序版本,可以进行如下的操作:生效版本,提供版本上线功能;对版本进行加解锁,有效防止误操作;SVN代码管理,通过svn方式对代码进行管理;配置,可对配置文件进行可视化修改;在线编辑,可对已经提交到平台上的版本进行在线编辑,方便在线修改;如果版本已无用,则可删除。
此外为了便于开发者进行程序开发,平台提供了如下服务:mysql服务、 memcache服务、cron服务、fechurl服务和云存储服务。
自然,为方便开发者了解程序的管理和执行情况,平台为开发者提供了四类信息:状态信息、资源配额信息、程序日志和管理日志。
本教程将根据开发者的一般操作流程对平台的使用做一个简单的引入:
首先,讲解应用部署基本流程。开发者可以在这一节初步接触平台,完成一个简单程序的部署过程。
其次,阐述版本配置的可视化修改。开发者可以使用简单明了的方式,完成对程序url的展现形式、出错跳转以及静态文件缓存等的设置。
再次,将简述目前平台提供的服务以及这些服务使用的说明。
最后,概述各种程序信息的查看。
程序部署基本流程
第一步:创建程序
使用你的百度帐号登录 http://app.baidu.com/ 之后进入“我的开发平台”。如果你还没有创建任何程序,将进入程序创建页面。
点击“创建新程序”,创建第一个程序。
输入程序名称、域名,并选择同意使用协议。
点击“创建”按钮,将进入到程序状态信息页面,创建程序完成。
第二步:创建程序版本
点击“管理”或者“版本管理”,可以通过“创建新版本”和“对接新版本”方式来创建一个程序版本。
创建新版本
点击“创建新版本”,弹出版本信息框。
输入正确的版本号(0-19之间的整数),点击保存,将提示创建成功。
点击“确定”按钮,将看到新创建的版本。
也可通过“对接新版本”来创建一个程序版本。
对接新版本
下面以对接一个简单的程序版本为例来阐述对接版本过程。该版本生效后,访问程序域名test2011.duapp.com将显示hello,demo 2011。
首先,开发程序新版本代码。新建文件index.php,其内容为: <?php echo "hello,demo 2011"; ?>,在没有对程序版本进行配置之前,访问程序域名时的入口为根目录下名为index的php、html、htm或者wml文件,也可以是default.htm文件
然后,准备配置文件。百度应用开发平台需要为程序提供配置文件app.conf(app.conf配置项,具体请参见 app.conf文件说明)。这个配置文件必须是惟一的,且放置在程序根目录下。开发者可以选择对接一个空的配置文件,然后通过后文谈及的配置,添加配置项。
最后对接程序,使用压缩工具将源码目录打包。支持tar、gz、rar和zip四种格式。 点击“对接新版本”,输入版本号,对接程序源代码包至百度应用开发平台。
对接成功后,可以在版本列表中展现。
程序版本创建成功后,平台会自动对程序版本进行部署,部署成功后,状态显示为“已发布”。若在部署中,状态显示为“发布中”,开发者可刷新当前页面。此时程序已经在平台上部署,但还未开放给外部访问。
如果此时该版本已经完成了全部开发,可以对外开放,可转第三步来生效版本,将版本上线。否则可以转入第四步,通过在线编辑或svn方式对已发布的版本继续开发。
第三步:生效
点击“生效”按钮,状态变为“已上线”,平台在此过程中会对生效成功的版本自动加锁,防止误操作。例如,我们生效版本1,生效成功后,版本1的状态变为已上线,并且已完成自动加锁。
第四步:开发程序
通过程序管理后台的“版本管理”可以进入到版本列表页面。 在版本管理中,我们为每个版本提供了编辑注释、生效、加解锁、SVN方式进行版本管理、在线编辑、删除、配置修改以及预览功能。
版本加解锁
通过“锁定”按钮,可以对当前版本进行加锁例如对版本0,点击“锁定”,弹出如下对话框。
点击“确认”则提示加锁成功,原“锁定”按钮变为“解锁”。锁定后的版本将不能通过任何方式进行改动,包括删除。如果想对版本进行操作,则需解锁。
点击确定,则解锁成功。原“解锁”按钮变为“锁定”。
SVN版本管理
开发者可以通过SVN来对代码进行部署。首先点击“SVN”, “复制SVN地址”,获取版本的svn仓库地址。
版本代码在线编辑
平台提供了代码在线编辑功能,开发者除了可以对已有的文件进行编辑外,还可以对文件和目录进行在线创建、删除和重命名。
在线编辑不支持IE浏览器,如果您是IE用户,在点击“版本管理”中版本之后的“编辑”,将给予如下的提示。
使用在线编辑支持的浏览器,点击“版本管理”中的“编辑”按钮,则进入该版本的在线编辑页面。
在线编辑中所有的操作采用统一的过程,首先点击对应的操作按钮,然后进行操作,之后进行保存。
以新建文件为例,首先点击“新建文件”图标,编写新建文件的文件名和选择新建的文件格式,点击保存,则新建文件完成。
点击保存后,F5刷新当前页面,在左侧的文件列表中,则可以看到新增加的文件。
温馨提示:目前在线编辑支持的文件格式有php、js、html、css和txt,对于不支持的格式文件,不显示在在线编辑的文件列表中,如果开发者想对这些文件进行操作,建议通过SVN进行管理。此外在线编辑过程中,由于平台会对开发者的代码进行自动发布,所以每步操作成功之后,需自行刷新编辑页面,方可看到更新效果。
在线编辑过程中,开发者保存后,平台会对代码进行自动发布。如果在保存后,由于网络等原因出现版本未发布成功的提示,可退出在线编辑页面,利用“版本管理”页面提供的“重新发布”操作,手动发布。
应用配置使用教程
配置向导是原来app.conf文件功能的可视化模式。
点击每个版本后的“配置”按钮,即可进入配置页面进行配置。右上角的添加按钮可以添加一条配置。
操作栏的上移、下移按钮可以改变规则的执行顺序。系统是从上往下依次生效的。编辑按钮可以修改当前这条配置。删除按钮可以删除当前配置。 切记所有的操作最终生效都要点击右上角的保存按钮。另外,为了提高程序的访问性能,平台对部分配置文件默认加“永久”缓存,即expire配置项,用户可以点击删除按钮进行删除。
配置规则类型
如下图所示,可以配置的规则类型有errordoc、expire、mime、url这几类。下面分别介绍每一种配置的功能及使用方法。
errordoc配置
errordoc配置的功能是指示web server在处理用户请求遇到相关错误时,跳转到指定的处理页面。
示例1:
0表示任意错误,包括HTTP STATUS CODE为4XX和5XX的错误。上面的配置使得当任意错误发生时,页面会被重定向到”/allerror.php”。
示例2:
上面的配置表示,当发生404错误(请求的文件不存在)时,页面会被重定向到”/not_found.php”。
expire配置
expire配置的功能是设置符合匹配规则的文件的过期时间,指导浏览器对其进行缓存和失效。
配置的规则是一个正则表达式。url匹配到这个正则时,相应的设置会发送到浏览器。
失效设置的格式为:(access|modify) d+ (years|months|weeks|days|hours|minutes|seconds)
示例
表示url后缀为”.css”的文件的过期时间为1个月。
mime配置
mime配置的功能是使得符合配置条件的文件的响应头中会添加指定Content-Type字段。
示例
表示将后缀为”.txt”的文件的Content-Type设置为”text/plain”。
url配置
url配置的功能类似是url rewrite功能。将符合匹配规则的url重写到指定的脚本处理。Rewrite规则可以配置多条。顺序是从上往下依次匹配,遇到第一个匹配成功的即结束配置过程。另外, 并不需要请求的uri完全匹配指定的正则,只要其中有部分内容匹配即可。
示例
对于上面的规则,请求”/profile/a/b”会被重写到由/employee/b/a.php来处理。
平台服务使用入门教程
Mysql服务
在分布式环境下,为满足开发者存储数据的需要,平台提供了mysql服务。BAE平台为开发者提供了简单的mysql服务接入接口和管理界面,并且提供了php语言环境下的API供开发者在自己的程序中使用。
默认情况下,平台对开发者的程序实行“按需分配”,即需要开发者在使用mysql时,首先在平台上初始化msyql服务。
初始化mysql服务
点击“初始化MYSQL”,完成msyql服务初始化。如果初始化成功,将进入mysql服务的辅助管理界面。
辅助管理
在辅助管理界面中,可以看到开发者当前具有的权限,即程序可以执行的操作:select(查询表)、insert(插入记录)、update(更新表)、delete(删除记录)、drop(删除表)、index(添加索引)、alter(更改表属性)。
示例:创建表myfirsttbl,具有用户id、用户名、用户邮箱、当前状态和记录插入时间属性;操作成功,将返回true。如果查询语句有错误,将会报警。
显示所有的表:
在编辑框中输入“show tables;”并查询。
其他语句类似,开发者可以在编辑框裸写sql语句。
Mysql API使用
至此,我们已经完成了使用msyql服务的第一步。接下来如果在开发程序中使用msyql服务,就必须包含一个名为app_config.php的文件。
app_config.php文件是程序在发布的过程中,平台自动为开发者生成的,放置开发者程序的根目录下。在该文件中定义了服务使用相关的常量和接口。开发者在使用这些服务的接口时,必须先包含这些文件,并注意使用时的相对路径。此外,要注意初始化必须在当前版本的自动发布之前进行,如果在自动发布之前进行,则需重新创建新版本,在新版本中才能使用mysql接口,或者更改当前的版本代码,触发一次发布过程。
Mysql API的使用详见Mysql API使用手册
Memcache 服务
BAE平台为开发者提供了分布式缓存服务,用于支持开发者小数据的缓存。目前,在开发者的程序创建之初,BAE已经为开发者创建了memcache,开发者可以直接使用。
但是与标准的memcache服务不同,平台对memcache服务接口进行了封装。
同BAE的mysq服务一样,在使用时,必须包含一个名为app_config.php的文件(见mysql服务中的描述)require_once(‘app_config.php’)
然后包含BaeMemcache.class.php类,实例化一个BaeMemcache对象。
require_once(BAE_API_PATH ."/BaeMemcache.class.php");//加载BaeMemcache类
$mem = new BaeMemcache();//生成对象
调用相应接口。
云存储服务
目前BAE平台已将原有的“资源管理”和“kv storage”升级至云存储。对于已经开通资源管理和KV Storage服务的开发者,我们强烈建议您将资源迁移到云平台,后续我们将不对该部分进行维护,并于2011年12月30日14时将该功能入口下线。
由于云平台目前还未完全对外开放,无论新老用户都需到云平台进行申请开通。
申请流程如下:
首先登录BAE,进入应用的管理页面,点击“资源管理”(或点击“kv storage”),将进入下图页面。
如果您当前的程序升级之前已在“资源管理”页面或者“kv storage”页面进行过初始化,在点击“资源管理”时将进入弹出下图。
点击“前往百度云开放平台”
“申请邀请码”,并在申请理由中注明以下信息:
BAE用户
BAE平台上程序的appid、程序名和域名信息;
如果对接完成,将会收到验证码信息。再登录云平台完成申请流程。此时可以在平台申请bucket,ak和sk。云存储的详细使用,请参见开放云平台文档
注意:云平台的bucket与bucket中的文件之间的公开读写是或的关系,即只要有一个为公开,bucket的文件读写就是公开的。 比如开发者有一个名字为mybucket的桶,桶中有a.jpg和b.jpg两个文件。如果将mybucket的属性设置为公开读和公开写,则无论a.jpg和b.jpg的自身的读写属性是什么,两个文件都会为公开读和公开写。因此若想文件是私有的,必须文件所在的桶和文件的属性都是私有的。
平台代码部署中每个版本的50M空间,主要用于开发者存储执行相关的代码。云存储则用于存储开发者的静态资源。下面以一个程序静态文件Winter.jpg为例阐述使用过程。
第一步,将文件传至云存储。
第二步,获取文件的url。
为了保护开发者的数据信息,云存储将开发者创建的bucket和上传上来的文件默认设置为私有的性质。上传上来的静态资源在使用时就必须携带上一串密钥信息才可以使用。例如,其他用户若想访问该图片,必须携带。sign=MBO:uFRhAHJNS78m:N3UUhhQ4Wa4zMF1bif2406ASDGM%3D,如果不携带,将会报错。
为避免麻烦,开发者可以通过更改图片的属性,改私有为公开读。由于bucket在创建的时候默认为私有的,如果有很多静态文件都需要在程序中使用,则可以将所在bucket的属性修改为公开读,这样就不必每个文件逐个设置,但是注意别将私有文件放置在该bucket下面,以免外泄。
此时文件的“分享url”为:
http://bcs.duapp.com/firstbucket/Winter.jpg?response-content-disposition=attachment;filename=
Winter.jpg 此url为下载使用的url。
如果想内嵌文件,而不是下载,则只取“分享url”的前半部分,不带url参数,即:
http://bcs.duapp.com/firstbucket/Winter.jpg
说明:url的组合是有规则的,开发者可以手动拼写url。
内嵌url:http:// bcs.duapp.com/桶名/文件夹名/…/文件名
下载url:http:// bcs.duapp.com/桶名/文件夹名/…/文件名?response-content-disposition=attachment;filename=文件名
第三步,使用。
在BAE平台上用户的程序中,可以直接“引用”这些文件,不存在跨域访问不到的问题
下载示例:
内嵌示例:
FetchUrl服务
出于安全考虑,平台暂时屏蔽了原生态的curl方法,但是提供了封装性更好的替代服务,即FetchUrl。同mysql服务和memcache服务一样,开发者在使用时需要包含文件app_config.php
并包含文件BaeFetchUrl.class.php。
例如程序的相对根目录下使用:
require_once 'app_config.php';
require_once (BAE_API_PATH . '/BaeFetchUrl.class.php');
FetchUrl的详细使用,请见API文档中的fechurl部分
计划任务使用教程
进入计划任务管理
登陆成功后点击左侧菜单:服务管理->cron任务
打开界面如下:
默认页面是“正常运行cron”列表页,依次点击”增加失败的cron”和”删除失败的cron”可以查看对应的cron列表。
添加计划任务
打开计划任务管理页后,点击“添加”链接,打开如下界面
根据向导定制需要执行的任务。如果增加失败,则会进入“增加失败的cron”列表。
注意:运行脚本为所在应用域名根为起点的应用相对路径。
例:如果域名为test.baidu.com,所要执行的脚本为http://test.baidu.com/cron/test.php则此处应该填写:/cron/test.php
以“添加每5分钟执行任务”为例来详解每个操作步骤:
第一步:添加任务->输入任务名称和所要运行的脚本->选中高级单选框
第二步:点击分钟栏后的编辑
选中每几分钟单选框,在分钟输入框内输入5然后点提交
第三步:提交任务
点击提交按扭,任务添加成功。任务列表见下图:
提示:
计划任务高级中,每项的规则完全等同行Linux下的crontab计划任务配置,如果对此比较熟悉的同学,完全可以自己直接填写每一项而不用向导。
查看计划任务执行结果
刷新cron管理页,可看到任务列表中每个任务执行状态:
运行结果状态栏包括:任务上次执行时间、执行结果以及执行任务时所消耗的时间。
删除计划任务
点击任务列表右侧操作栏的删除按钮可删除任务。(删除不可恢复)
如果删除失败,会进入删除失败的cron列表
清空“增加失败”或“删除失败的”任务
进入“增加失败”或”删除失败”的任务列表,点击“全部清空”链接可清除失败的任务。
成员管理
为了满足多人开发一个程序的需要,平台引入了成员管理功能。程序的创建者可以邀请其他账户加入程序,并通过赋予不同的角色授予被邀请者不同的权限。
邀请成员
您可以邀请没有BAE权限的百度用户加入程序管理,平台会对您邀请的帐号自动开通管理当前程序的角色权限。下面以邀请不具有bae权限的百度用户“baeinvite”为例进行说明。
点击“邀请新成员”,将弹出邀请窗口。
输入被邀请者的信息,选择邀请角色。
确认邀请,一旦邀请成功,被邀请者将直接成为当前程序的成员,并且平台向被邀请者发送邮件,用于通知被邀请者。
在邀请时,请注意如下问题:
百度帐号:平台对用户输入的被邀请者帐号不做检查,因此用户在输入被邀请者的百度帐号时需谨慎,防止外泄程序信息。
通知邮箱:请注意通知邮箱的格式必须正确,该邮箱仅用户通知被邀请者已成功加入当前程序。
为了方便邀请者和被邀请者,平台省去了邀请确认等一系列繁琐的过程,但需需要邀请者在邀请时要更加谨慎。
一个程序的可以有四类角色:创建者、协作管理员、协作开发者和观察者。
创建者:具有程序的所有权限;
协作管理者:具有除删除程序、云平台资源管理外的其他权限,包括更改低优先级成员角色,其中“低优先级成员角色”指协作开发者和观察者;
协作开发者:具有除删除程序、云平台资源管理和成员管理外的其他权限;
观察者:具有除查看云平台资源外的所有查看权限。
更改成员角色
当被邀请者加入程序的成员组后,比如我们的baeinvite成员,程序的创建者可以更改baeinvite的角色,假设将其升级为协作管理者。
删除成员
程序的创建者也可以删除程序的某个成员,比如baeinvite,确认删除。
退出程序的成员组
被邀请者登录BAE后,点击“我参与的程序”将看到被邀请的相应程序。
进入程序的成员管理页后,程序的成员可以选择退出程序。
点击“退出参与”,不具有bae权限的帐号将自动跳转至开通页面。
查看程序信息
为方便用户查看程序的各种信息,BAE平台提供了四种可供查看的信息,分别是状态信息、程序日志、流量监控和资源配额。
状态信息
通过状态信息,开发者可以查看跟程序相关的基本信息,包括程序ID,程序名,创建和更新时间,程序当前的上线版本以及域名信息。
程序日志
程序日志用于开发者查看程序的运行情况,分为三种:所有日志、正常日志和错误日志。选择日志的种类以及查看时间(注意时间间隔不能大于30分钟),确认后则可以下载日志。
流量监控
开发者可以通过流量监控来查看程序的流量和有效pv情况。
资源配额
资源配额提供用户程序的服务器资源配额情况,包括最近单个请求的资源使用情况、1小时资源配额、7日资源配额以及半年的资源配额。
删除程序
目前在BAE平台上,每个开发者最多可以创建10个程序。如果某些程序已经无用,则可以将这些程序删除。
点击“我的开发平台”,回到BAE平台的程序列表页,点击待删除程序的“删除”按钮,将完成程序的删除。