分享

百度云开发新手入门

hyj 发表于 2013-12-30 02:49:37 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 8 31029
本帖最后由 hyj 于 2014-4-18 01:05 编辑

问题导读

我们都知道百度云,那么该如何使用百度云:

可能我们会遇到如下问题:

1.如何创建应用?

2.如何部署?

3.如何发布?





百度云开发,会被很多企业接受和流行,为了方便大家对百度云开发的了解,这里特地从百度云官方找到百度云开发入门。希望对想了解百度云的同学有所帮助。

1、登录百度开放云

start1-1.png


2、点击右上角“管理控制台”,进入我的应用列表页,点击“创建应用”按钮。


start1-2.png
图2


3、填写“应用名称”,如nodejs,点击“创建”按钮。


start1-3.png
图3


4、查看应用:创建应用成功后进入到该应用的基本信息页,可查看应用信息,如名称、ID、API Key(简称ak),Secret Key(简称sk)等。其中ID、AK、SK是经常需要用到的,也可以从页面右上角的快速复制按钮获取到。


start1-4.png
图4


添加部署

1、在应用基本信息页,点击左边栏的“应用引擎”,进入部署列表页。


start1-5.png
图5


2、点击“添加部署”,填写部署名称如nodejssvn,选择部署类型nodejs-web,填写域名如nodejssvn,代码版本工具选svn,点击“创建”。


start1-6.png
图6


注意

  • 部署类型目前支持:php-web、php-worker、java-web、python-web、python-worker和nodejs-web
Worker类型的部署没有域名,一般用于抓取网页插入数据库的脚本应用。
目前java和nodejs只提供web类型。
  • 代码版本工具支持:svn和git

3、查看部署:BAE部署创建成功后,在部署列表中可看到刚创建的部署信息。


start1-7.png
图7


发布上线

根据创建部署时选择的“代码版本工具”,使用SVN或者GIT管理应用代码。

选中刚刚创建的部署,点击“发布设置”,下面就以GIT为例说明。(如果你习惯使用SVN,请跳过该小节看下一小节吧)


start1-8.png
图8


GIT方式

1、获取GIT地址:在“发布设置”页面,点击“复制”获取GIT地址。


start1-9.png
图9


2、下载初始代码:通过Git客户端工具将初始代码下载到本进行开发,Git客户端使用说明参见GIT使用


start1-10.png
图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到服务器上。

start1-11.png
图11


start1-12.png
图12


4、发布代码上线:代码提交成功后,再次进入“发布设置”页面,会发现“代码库最新版本”与当前线上版本不一致。点击“发布最新版”即上线。稍候线上版本与代码库版本一致则上线成功。(如果代码量较大,或需要下载的依赖较多,可能耗时较长)

另外,代码提交新版时,部署列表状态栏会显示“有新版”,此时点击“快捷发布”也等同上线。如下图示。


start1-13.png
图13


5、查看应用:上线完成后,点击部署列表中“点击查看”,可查看应用线上版本。


start1-14.png
图14


至此,我们的Ghost博客就搭好了。你成功了吗?


start1-15.png
图15


SVN方式

1、获取SVN地址:在“发布设置”页面,点击“复制”获取SVN地址。


start1-16.png
图16


2、下载初始代码:通过SVN客户端工具将初始代码下载到本进行开发,SVN客户端使用说明参见SVN使用


start1-17.png
图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到服务器上。

start1-18.png
图18


4、发布代码上线:代码提交成功后,再次进入“发布设置”页面,会发现“代码库最新版本”与当前线上版本不一致。点击“发布最新版”即上线。稍候线上版本与代码库版本一致则上线成功。(如果代码量较大,或需要下载的依赖较多,可能耗时较长)

另外,代码提交新版时,部署列表状态栏会显示“有新版”,此时点击“快捷发布”也等同上线。如下图示。



图19


5、查看应用:上线完成后,点击部署列表中“点击查看”,可查看应用线上版本。


start1-20.png
图20


至此,我们的Ghost博客就搭好了。你成功了吗?


域名绑定

BAE3.0与BAE2.0相同,也支持绑定自定义域名,步骤如下:

1、CNAME自定义域名到duapp域名。

绑定域名首先需要将自定义域名CNAME到duapp的域名,详细方法见《域名绑定》

2、自定义域名绑定。

进入“发布设置”页面,点击“绑定自定义域名”按钮,输入已CNAME过的自定义域名后,点击“保存”,绑定完成后,即可通过该域名访问应用。

start1-21.png
图21


资源监控

博客部署好之后,可以通过资源监控查看博客日常运行情况,包括HTTP请求相关的,如请求量、QPS、平均响应时间等,以及执行单元的内存、磁盘使用情况。具体说明如下:

在“部署列表”页选中某个部署,点击“资源监控”按钮,进入对应资源监控页面


start1-22.png
图22


HTTP请求

主要监控HTTP请求相关项,包括平均每秒请求数(QPS),平均响应时间,请求数和流出流量,可以查看不时间段的趋势图,包括最近60分钟、最近24小时、最近7天和最近30天。


start1-23.png
图23


注意:还可以通过点击图表底部的图例,如“总请求”,“2xx”,“3xx”等来切换或选择只查看其中某一项的曲线。


执行单元

主要监控各执行单元的内存和磁盘的使用情况,可以查看不时间段的趋势图,包括最近60分钟、最近24小时、最近7天和最近30天。


start1-24.png
图24


设置预警

在资源监控页,点击“设置预警”按钮,可设置当某监控项达到某预设阈值时发送预警邮件提醒开发者及时处理。比如,当虚拟内存(Memory Swap Used)使用超过85%表示后端执行单元虚拟内存快占满了,需要尽快调大内存,缓解压力。


start1-25.png
图25


可以选择“开启”和“关闭”预警功能。可以根据自己实际情况设置预警值。也可以设置多个预警邮件接收邮箱。

更详细的监控说明参见《资源监控介绍》


执行单元管理

资源数指的是分配到某个BAE部署的执行单元个数。创建部署时默认是分配一个执行单元。


start1-26.png
图26


接上一节讲,通过资源监控可以查看博客日常的运行情况,并根据需要调整执行单元个数。在部署列表页,选中某个部署,点击“执行单元管理”,进入管理页面,修改执行单元个数或者套餐,点击“生效”确定修改。

页面下方可以查看当前执行单元列表,并可手动重启执行单元。


start1-27.png
图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)

在“部署列表”页,选中某个部署,点击“查看日志”可以查看执行单元里的日志。


start1-28.png
图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。


start1-29.png
图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等等。点击“扩展服务”进入扩展服务页面,点击“添加新服务”选择需要的服务创建。


start1-30.png
图30


比如我们之前部署好的Ghost博客,默认是用的sqlite3,不太方便,我们可以替换成这里的MySQL。步骤如下:

1、创建MySQL实例

如上,点击添加新服务选择MySQL。创建成功,即可以扩展服务列表中看到概实例。

start1-31.png
图31


2、获取数据库名、连接地址、端口、用户名、密码等信息

点击MySQL数据库名称,可以查看该实例基本信息。建立数据库连接时需要用到。

start1-32.png
图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(日志) 提供日志记录服务。详情见

删除部署

在“部署列表”页,选中某个部署,点击“删除”按钮进行删除,确定你真的不需要这个部署了才能删除哦,目前删除是不可恢复的。


start1-33.png


已有(8)人评论

跳转到指定楼层
行走的风景 发表于 2014-3-14 01:22:39
原来 是这样用的啊。
回复

使用道具 举报

mongol 发表于 2014-3-19 16:59:20
本帖最后由 mongol 于 2014-3-19 17:05 编辑

不错,刚才也去百度云那里看了下,有直接的提示。
回复

使用道具 举报

pig2 发表于 2014-3-19 17:01:42
mongol 发表于 2014-3-19 16:59
现在不一样了,估计是前期给开发者的福利吧!

原先百度云开发不太成熟,而且还邀请了不少人。现在应该成熟了一些
回复

使用道具 举报

mongol 发表于 2014-3-19 17:06:18
pig2 发表于 2014-3-19 17:01
原先百度云开发不太成熟,而且还邀请了不少人。现在应该成熟了一些

恩,刚才仔细浏览了下,我漏掉了,不过现在成熟多了,BAE都收费了。
回复

使用道具 举报

pig2 发表于 2014-3-19 17:08:22
mongol 发表于 2014-3-19 17:06
恩,刚才仔细浏览了下,我漏掉了,不过现在成熟多了,BAE都收费了。

原先都是使用,云的模式是一种付费模式。很多云以后都会收费,但是费用相对企业来讲,应该不会太贵
回复

使用道具 举报

null 发表于 2014-3-19 21:53:28
学习了,好论坛,各种云都有
回复

使用道具 举报

545302 发表于 2014-9-3 10:11:04
各位大神多多指教
回复

使用道具 举报

ainubis 发表于 2015-4-2 01:34:53
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条