相信会有百度云爱好者对百度云感兴趣,这里给大家介绍一下百度云开发。
实例教学
要使用百度应用引擎(BAE),需要创建一个应用,并在创建完成后托管到BAE。本章将以如何搭建Node.js的博客系统(ghost)为例讲解应用创建、代码部署,以及对应用的管理和维护。快来跟着我一起操作吧!
视频!please wait~
创建应用
2、点击右上角“管理控制台”,进入我的应用列表页,点击“创建应用”按钮。
3、填写“应用名称”,如nodejs,点击“创建”按钮。
4、查看应用:创建应用成功后进入到该应用的基本信息页,可查看应用信息,如名称、ID、API Key(简称ak),Secret Key(简称sk)等。其中ID、AK、SK是经常需要用到的,也可以从页面右上角的快速复制按钮获取到。
添加部署1、在应用基本信息页,点击左边栏的“应用引擎”,进入部署列表页。
2、点击“添加部署”,填写部署名称如nodejssvn,选择部署类型nodejs-web,填写域名如nodejssvn,代码版本工具选svn,点击“创建”。
图6
注意:
- 部署类型目前支持:php-web、php-worker、java-web、python-web、python-worker和nodejs-web
Worker类型的部署没有域名,一般用于抓取网页插入数据库的脚本应用。
目前java和nodejs只提供web类型。
3、查看部署:BAE部署创建成功后,在部署列表中可看到刚创建的部署信息。
图7
发布上线根据创建部署时选择的“代码版本工具”,使用SVN或者GIT管理应用代码。
选中刚刚创建的部署,点击“发布设置”,下面就以GIT为例说明。(如果你习惯使用SVN,请跳过该小节看下一小节吧)
图8
GIT方式1、获取GIT地址:在“发布设置”页面,点击“复制”获取GIT地址。
图9
2、下载初始代码:通过Git客户端工具将初始代码下载到本进行开发,Git客户端使用说明参见 GIT使用
图10
3、修改代码并提交:初始代码下载完成后,文件夹中包含app.conf、package.json、server.js三个文件。下面我们下载Ghost博客官方版,并移植到BAE3.0中。
下载完成后,解压缩到刚刚初始代码所在的文件夹里。 - 修改配置:将config.example.js文件中的port(值2368或2369)全部替换成18080
注意:Node.js server监听的端口必须是18080,因为lighttpd和Node.js server之间的通讯端口是18080。 注意:sqlite3的部分文件存储在亚马逊的云存储上,而BAE无法连接到,因此将其放到了百度云存储上。 - 提交代码:保存以上修改,用Git客户端工具提交代码,并push到服务器上。
图11
图12
4、发布代码上线:代码提交成功后,再次进入“发布设置”页面,会发现“代码库最新版本”与当前线上版本不一致。点击“发布最新版”即上线。稍候线上版本与代码库版本一致则上线成功。(如果代码量较大,或需要下载的依赖较多,可能耗时较长)
另外,代码提交新版时,部署列表状态栏会显示“有新版”,此时点击“快捷发布”也等同上线。如下图示。
图13
5、查看应用:上线完成后,点击部署列表中“点击查看”,可查看应用线上版本。
图14
至此,我们的Ghost博客就搭好了。你成功了吗?
图15
SVN方式1、获取SVN地址:在“发布设置”页面,点击“复制”获取SVN地址。
图16
2、下载初始代码:通过SVN客户端工具将初始代码下载到本进行开发,SVN客户端使用说明参见 SVN使用
图17
3、修改代码并提交:初始代码下载完成后,文件夹中包含app.conf、package.json、server.js三个文件。下面我们下载Ghost博客官方版,并移植到BAE3.0中。
下载完成后,解压缩到刚刚初始代码所在的文件夹里。 - 修改配置:将config.example.js文件中的port(值2368或2369)全部替换成18080
注意:Node.js server监听的端口必须是18080,因为lighttpd和Node.js server之间的通讯端口是18080。 注意:sqlite3的部分文件存储在亚马逊的云存储上,而BAE无法连接到,因此将其放到了百度云存储上。 - 提交代码:保存以上修改,用SVN客户端工具提交代码,并push到服务器上。
图18
4、发布代码上线:代码提交成功后,再次进入“发布设置”页面,会发现“代码库最新版本”与当前线上版本不一致。点击“发布最新版”即上线。稍候线上版本与代码库版本一致则上线成功。(如果代码量较大,或需要下载的依赖较多,可能耗时较长)
另外,代码提交新版时,部署列表状态栏会显示“有新版”,此时点击“快捷发布”也等同上线。如下图示。
图19
5、查看应用:上线完成后,点击部署列表中“点击查看”,可查看应用线上版本。
图20
至此,我们的Ghost博客就搭好了。你成功了吗?
域名绑定BAE3.0与BAE2.0相同,也支持绑定自定义域名,步骤如下:
1、CNAME自定义域名到duapp域名。
绑定域名首先需要将自定义域名CNAME到duapp的域名,详细方法见《域名绑定》
2、自定义域名绑定。
进入“发布设置”页面,点击“绑定自定义域名”按钮,输入已CNAME过的自定义域名后,点击“保存”,绑定完成后,即可通过该域名访问应用。
图21
资源监控博客部署好之后,可以通过资源监控查看博客日常运行情况,包括HTTP请求相关的,如请求量、QPS、平均响应时间等,以及执行单元的内存、磁盘使用情况。具体说明如下:
在“部署列表”页选中某个部署,点击“资源监控”按钮,进入对应资源监控页面
图22
HTTP请求主要监控HTTP请求相关项,包括平均每秒请求数(QPS),平均响应时间,请求数和流出流量,可以查看不时间段的趋势图,包括最近60分钟、最近24小时、最近7天和最近30天。
图23
注意:还可以通过点击图表底部的图例,如“总请求”,“2xx”,“3xx”等来切换或选择只查看其中某一项的曲线。
执行单元主要监控各执行单元的内存和磁盘的使用情况,可以查看不时间段的趋势图,包括最近60分钟、最近24小时、最近7天和最近30天。
图24
设置预警在资源监控页,点击“设置预警”按钮,可设置当某监控项达到某预设阈值时发送预警邮件提醒开发者及时处理。比如,当虚拟内存(Memory Swap Used)使用超过85%表示后端执行单元虚拟内存快占满了,需要尽快调大内存,缓解压力。
图25
可以选择“开启”和“关闭”预警功能。可以根据自己实际情况设置预警值。也可以设置多个预警邮件接收邮箱。
执行单元管理资源数指的是分配到某个BAE部署的执行单元个数。创建部署时默认是分配一个执行单元。
图26
接上一节讲,通过资源监控可以查看博客日常的运行情况,并根据需要调整执行单元个数。在部署列表页,选中某个部署,点击“执行单元管理”,进入管理页面,修改执行单元个数或者套餐,点击“生效”确定修改。
页面下方可以查看当前执行单元列表,并可手动重启执行单元。
图27
注意:
- 当资源数大于1时,该应用即成为了分布式应用。
- 对于分布式应用,需要将session、静态变量等使用cache或数据库进行存储。
- 对于分布式应用,若要进行本地写,需要用云存储或NFS服务进行存储。
查看日志在BAE平台中,提供了一种查询Container中临时日志的方式,其目的是为了方便用户快速的查询最近的日志,了解container的运行状态。但是这种日志又不想走日志服务,因为日志服务太重了,实时性相对差一些,还要改自己的代码。针对这些需求,BAE提供了一种临时的解决方案—本地日志。这种日志不保证存储时间,随着container的迁移和回收,都会造成日志的丢失,所以此类日志的定位是临时的、没有服务保证的、快速及时的一种解决方案。
日志的打印方式日志打印非常简单,使用语言提供的日志模块即可,请确认日志打印的目录为
/home/bae/log打印的后缀名可自己任意定义,比如在/home/bae/log下面有三个日志文件 user.log.1 user.log.2 lighttpd.log 那么你在页面上可以看到两中日志类型 [user lighttd] 查询user.log,默认是察看的user.log.2文件的tail
下面以python为例
import osimport syscwd = os.path.dirname(__file__)import loggingimport logging.configlogging.config.fileConfig(os.path.join(cwd, “conf”, “logging.conf”)) logging.info(“This is a test message”)logging.conf内容如下
[loggers keys = root [handlers keys=rotateFileHandler [formatters keys=simpleFormatter [formatter_simpleFormatter format = [%(asctime)s(%(levelname)s)%(name)s : %(message)s [logger_root level=INFO handlers=rotateFileHandler [handler_rotateFileHandler class=handlers.RotatingFileHandler level=INFO formatter=simpleFormatter args=(“/home/bae/log/user.log”, ‘a’, 20971520, 5)
在“部署列表”页,选中某个部署,点击“查看日志”可以查看执行单元里的日志。
图28
除系统自带的日志如lighttpd日志之外。开发者也可根据自己的实际需要打日志。比如我们之前部署好的Ghost博客,想把博客主页每次加载的时间打出来。步骤如下:
1、修改代码并发布上线
- 找到 ./core/config-loader.js 文件,增加如下代码段:
var now = new Date();console.log("You Just refresh the page! time is " + now.getTime());2、刷新几次主页,查看日志nodejs标准输出日志npm_start.stdout.log。
图29
注意:日志文件包括:
- lighttpd.log : lighttpd日志(各语言均有)
- lighttpdwf.log: lighttpd的错误日志(各语言均有)
- npm_start.stdout.log: Node.js的启动日志和用户日志(Node.js特有)
- npm_start.stderr.log: Node.js的错误日志(Node.js特有)
- jetty_stderrout.log.xxxx_xx_xx: Jetyy日志(Java特有)
- phperror.log:PHP日志(PHP特有)
- fcgid.log:Python日志(Python特有)
扩展服务在部署列表旁边,BAE也提供了丰富的扩展服务,如MySQL、MongoDB、Redis、Cache等等。点击“扩展服务”进入扩展服务页面,点击“添加新服务”选择需要的服务创建。
图30
比如我们之前部署好的Ghost博客,默认是用的sqlite3,不太方便,我们可以替换成这里的MySQL。步骤如下:
1、创建MySQL实例
如上,点击添加新服务选择MySQL。创建成功,即可以扩展服务列表中看到概实例。
图31
2、获取数据库名、连接地址、端口、用户名、密码等信息
点击MySQL数据库名称,可以查看该实例基本信息。建立数据库连接时需要用到。
图32
3、修改代码并发布上线
- 修改 config.example.js 文件,将 database sqlite3对应代码段全部替换为如下
database: { client: 'mysql', connection: { host: 'sqld.duapp.com', //连接地地址 port: '4050', //端口 user: 'XXXXXXXXXXXXXXX',//用户名,即AK password: 'XXXXXXXXXXXXXXXXX',//密码,即SK database: 'mETebIAAuUHeCUvuORde',//数据库名 charset: 'utf8' }, debug: false },- 提交代码,发布上线。发布博文,查看相应内容已成功写入对应MySQL。
注意:目前支持的扩展服务包括:
- MySQL(数据库) 提供分布式的关系型数据库服务。详情见
- Redis(数据库) 提供key-value型非关系型数据库服务。详情见
- MongoDB(数据库) 提供分布式的非关系型数据库服务。详情见
- Cache(缓存) 提供高性能的分布式的内存对象缓存服务。详情见
- Image(图片处理) 提供图片抓取和按照用户定义的操作对图片进行处理的服务。详情见
- NFS(网络文件系统)提供分布式读写功能。详情见
- Log(日志) 提供日志记录服务。详情见
删除部署在“部署列表”页,选中某个部署,点击“删除”按钮进行删除,确定你真的不需要这个部署了才能删除哦,目前删除是不可恢复的。
图33
|