w3ctech

百度开放云平台搭建 ThinkJS 1.0 环境

更新

2016 年 2 月 15 日更新:百度云已经添加了基于 Node V4.2 的新版本,新版本支持 ThinkJS 2 的版本,使用方式没有变化


2015 年 11 月 20 日更新:ThinkJS 2 的版本不支持 node v 0.10 的版本,而百度云的版本正好是 v0.10,所以暂时升级不了 ThinkJS 2 的版本,已经在 BAE 官方提交反馈;

为什么选择百度云

原因就是百度云是为数不多提供 NodeJS 服务的 PaaS 平台,支持 Git 对代码进行管理,不用安装额外的客户端,至于收费,每月10元的收费不算贵,至少收费+Git提供了一个比较安心的环境保障;

百度云 ThinkJS 环境的局限性

和普通的 Linux 主机相比,百度云在 NodeJS 的环境上面有诸多限制。普通环境下,npm 安装 ThinkJS 的包后,ThinkJS 监听端口后启动,然后直接访问对应的主机端口即可,还有就是在前端使用 Nginx 等做反向代理,这些都没有大问题;使用百度云的问题,第一是无法手动安装 ThinkJS 的包,第二是百度云使用的是 lighttpd 做的反向代理,配置文件使用的是 YAML 语法规范。监听的端口这里也做的规定,不能任意指派,使用 18080;

环境部署

创建应用,添加BAE部署,选择“node.js-web”类型。版本管理工具建议选择 Git(本文也是根据 Git 演示的),根据页面提示操作即可。 创建应用

创建成功后通过 Git 拉取代码到本地,可以看到三个文件

app.conf (lighttpd 配置文件)
package.json(npm 配置文件)
server.js (应用入口文件)

在应用目录下面现在就可以使用 thinkjs 初始化项目了,使用 thinkjs-cmd 会提示目录不为空,这样的话可以先将这三个文件移出去,初始化完成后可以将 app.conf, package.json 复制回来,service.js 就可以删除了;

然后编辑 package.json, 符合 npm 规范就可以,主要是有以下几个注意的:

{
    "name": "thinkjs-test",
    "version": "1.0.0",
    "author": "AlphaTr",
    "description": "test in node use thinkjs",
    "scripts": {
        "start": "node index.js"
    },
    "dependencies": {
        "thinkjs": "1.0.0"
    }
}

一个是 "start": "node index.js" 这一行,后面的 index.js 就是 ThinkJS 的入口文件,所以百度云初始化的入口文件就可以丢弃不用了; 再一个是声明的依赖 "thinkjs": "1.0.0",声明在这里后,百度云会根据这里的依赖会自动安装 ThinkJS 的 npm 包到 .bae/node_modules 目录下,所以就不需要手动安装,也不要做手动安装。

再者就是编辑 App/Conf/config.js 文件,更改 port 为 18080,其他的配置按照需求来定就可以了。

最后编辑 app.conf 文件,这里简单配置下 handles,我会将所有文件都转发给 ThinkJS 处理

handlers:
  - regex_url: ^/index.js$
    script: $1.nodejs

  - regex_url: ^/$
    script: $1.nodejs

这样就能实现 lighttpd 反向代理到 nodejs。

OK,现在将代码 commit,push 上去,在 Web 页面管理控制台点击快捷发布就行了。

参考文档

原文载于我的博客 百度开放云平台搭建 ThinkJS 环境

w3ctech微信

扫码关注w3ctech微信公众号

共收到3条回复

  • 厉害,bae的环境都搞好了

    回复此楼
  • "start": "node index.js" 这个对吗,目录结构 不是 app/ www/index.js,觉得怪怪的

    回复此楼
  • 这里应该是 www/index.js 我本地将 www 目录去掉了~

    回复此楼