BAE上部署Ghost 0.5.1注意事项
BAE上部署Ghost可参考基本安装上述安装使用的是ghost0.4.7版本
在ghost 0.5 中为了解决测试时事件侦听器过多引发的警告,在注册single事件时,将代码由原先的
    process.on('SIGINT', function () {
         //...
            );
            process.exit(0);
        });
改为先移除所有的侦听器
    process.removeAllListeners('SIGINT').on('SIGINT', function () {
            //...
            );
            process.exit(0);
        });
在node 0.10.23版本下 对移除removeAllListeners的处理逻辑为
  listeners = this._events[type];
  if (typeof listeners === 'function') {
   // 如果该事件只有一个侦听器时
    this.removeListener(type, listeners);
  } else {
    while (listeners.length)
      this.removeListener(type, listeners[listeners.length - 1]);
  }
由于 ghost启动时 process的siging并未添加任何侦听器,所以其监听者队列为
listeners = this._events[siging] = undefined;
虽然node在0.10.23版本修复了这个bug新增了逻辑判断
if (typeof listeners === 'function') {
    this.removeListener(type, listeners);
  } else if (Array.isArray(listeners)) {
    // 只有存在监听队列时才执行下面的逻辑
    while (listeners.length)
      this.removeListener(type, listeners[listeners.length - 1]);
  }
遗憾的是,bae的node运行环境是 0.10.21,并未修复该bug.所以在ghost初始化时会引发 undefined has no property length 异常.为了解决这个问题,我们只能将初始化时的代码回滚为0.4.7版本,该改动在生产环境不会造成任何不良影响.
如果有人清楚bae 上更node运行环境的办法请告知
-------以下内容引用自玩转JAE------------
让 JAE 支持 Koa.js
其实就是让 JAE 支持 0.11.9 以上的 Node 版本,因为 Koa.js 使用了只有 0.11.9 以上版本 Node 的新特性 generator,以解决 callback hell 问题
JAE 提供的 Node 版本号为 0.10.15,显然是无法部署基于 Koa.js 框架的应用的。其实让 JAE 支持最新版本的 Node 也很简单,那就是自己提供最新版本的 Node ,Node.js 官网提供了编译好的各平台的二进制文件,而且除去 npm 就只有一个单个文件,部署非常方便,比如我下载了最新版本的 Node (v0.11.13) for linux-x64 ,解压出 Node 文件放在应用的 vendor 文件夹,然后修改 Procfile 文件为 web: ./vendor/node --harmony app.js ,然后像普通的 Node 应用一样部署即可
BAE上部署Ghost 0.5.1注意事项的更多相关文章
- 成功在BAE上部署ghost 5.0
		这周摸索着网站的建设,终于在今天成功上线!这里要谢谢ghost中文网和群里的网友,他的博客在这opengiser.他们的帮助太重要了.现在把过程记录下来,共同学习.试运营地址在edwardesire. ... 
- 在CentOS 7上部署Ghost博客
		作者:waringid 一.简介 跟静态博客不同的是,Ghost 这种轻量级的动态博客,有一个管理后台,可以直接写作和管理博客.本质上,跟 WordPress 是相通的,只是 Ghost 搭建在 No ... 
- 在BAE上部署Pomelo
		BAE升级到3.0后顿时感觉好用了很多,俨然云主机的感觉. 底下我将分享我在BAE上部署Pomelo的过程. 首先需要拥有一个BAE的执行单元.没有的可以自行百度并部署. 接着svn得出代码到本地.此 ... 
- 关于在BAE上部署ThinkPHP框架的问题
		现在有点小兴奋,因为在在BAE上部署ThinkPHP框架的问题快折腾一天了,午觉都没睡,不过没白整总算有点结果.不扯淡了,直入正题吧. 之前熟悉ThinkPHP框架,想在BAE上用ThinkPHP做点 ... 
- 那些在BAE上部署node.js碰到的坑
		在BAE上使用node.js半年多了,其中碰到了不少因为BAE云环境限制碰到的坑 写下来大家碰到了,也不用那么麻烦的去看好几天代码了,直接对症下药 官方公布的坑有: BAE是使用package.jso ... 
- MVC认知路【点点滴滴支离破碎】【三】----IIS7.5上部署MVC4.0
		发布web到iis不能运行Google ----- ╲ http://stackoverflow.com/questions/12057540/installing-asp-net-mvc-4-o ... 
- Ubuntu上部署Ghost博客
		所有文章搬运自我的个人主页:sheilasun.me 刚刚成功把自己的ghost博客部署到Linode VPS上了,在这里回顾并顺便整理一下从购买域名到部署代码到服务器的整个过程. 购买域名 万网或者 ... 
- servlet相关 jar包位置 BAE上部署web应用
		1手动编译servlet工程: 要编译servlet,则类路径classpath中必须包括Servlet API 的相关类,如果使用的web容器是Tomcat,则这些类通常封装在在tomcat的lib ... 
- Coding上部署Ghost博客
		Ghost构建于Node.js平台之上.支持0.10.*版本号的Node.js. 在你的本地计算机上执行Ghost事实上非常easy,前提是你已经安装了Node.js. 什么是Node.js? 略过 ... 
随机推荐
- 事务 TRANSACTION
			事务是数据库中一个但单独的执行单元(Unit),他通常由高级数据库操作语言(如SQL)或编程语言(如C++.Java)编写的用户程序的执行所引起.当在数据库中更改数据成功时,在事务中更改的数据便会提交 ... 
- iphone手机safari浏览器访问网站滚动条不显示问题解决办法
			近排有公司同事出差在外需使用OA系统,发现iphone手机safari浏览器在该出现滚动条的页面没有显示滚动条,导致无法正常使用. 系统前端页面是采用jeasyui搭建的框架,使用iframe变更主页 ... 
- 关于使用的xshll和xftp中乱码咋办?
			1.Xshll中 2.Xftp中同理都是一样的设置 
- Hbase常用操作(增删改查)
			Hbase常用操作(增删改查) [日期:2014-01-03] 来源:Linux社区 作者:net19880504 [字体:大 中 小] 运行Eclipse,创建一个新的Java工程“HBa ... 
- Socket 学习笔记 01 常用函数
			常用方法 创建套接字: socket() 绑定本机端口: bind() 建立连接: connect(),accept() 侦听端口: listen() 数据传输: send() ... 
- JS基础-表单元素-新表单元素-js概述
			1.表单元素 1.input元素 1.隐藏域和文件选项框 1.隐藏域 <input type="hidden"> 要提交给服务器的数据,但是不想展示给用户看可以放在隐藏 ... 
- syslog系统日志、事件日志分析、EventLog Analyzer
			syslog系统日志.事件日志分析.EventLog Analyzer Eventlog Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机.服务器.网络设备.数据库以及 ... 
- kbmmw 中虚拟文件操作入门
			kbmmw 中一直有一个功能,但是基本上都没有提过,但是在实际应用中,却非常有用,这个功能就是 虚拟文件包功能,他可以把一大堆文件保存到一个文件里面,方便后台管理. kbmmw 的虚拟文件在单元kbm ... 
- RHEL6.3下挂载ISO并配置安装软件包(转)
			1.将RHEL6.3的ISO镜像上传至RHEL6.3服务器上 2.挂载ISO镜像 一般将镜像文件挂载到/mnt/XXX下,所以首先创建挂载文件夹: # mkdir /mnt/cdrom 挂载(我将上传 ... 
- WebSocket 长连接 及超时问题解决
			<?phpset_time_limit(0); class SocketService { private $address = 'localhost'; private $port = 80; ... 
