Candy 是基于多说社交评论的社会化论坛系统,采用 Node.js/Mongodb 构建。营造简洁、实用、具有人情味的下一代论坛系统,是 Candy 的设计目标。
安装 Candy
你可以选择两种方式安装 Candy,将 Candy 视为一个 NPM 模块,在外部使用启动脚本启动。或者将整个仓库复制到本地直接运行启动文件。 这两种方式各有各的好处,如果你是个谨慎的使用者,并不希望频繁升级 Candy 核心文件,我推荐你采用第二种方式安装。
在尝试下面两种安装方式前,您首先需要安装Node.js和MongoDB到本地
1.将 Candy 仓库复制到本地并运行启动脚本
$ git clone https://github.com/turingou/candy.git
$ cd candy
$ npm install
$ PORT=3001 node app.js
2.将 Candy 视为 NPM 模块安装,在外部使用启动脚本启动,我已经为你准备了一个现成的启动脚本:
$ mkdir candy && cd candy
$ npm install candy
$ cp node_modules/candy/app.sample.js ./app.js
$ PORT=3001 node app.js
无论你以何种方式启动,你将在默认的端口看到一个全新的 Candy 正在静候你的初次访问。现在,使用浏览器访问 localhost:3000 你将能看到一个全新的 Candy Demo。
升级 Candy
无论你使用何种方式安装 Candy,都可以使用 NPM 或 Git 方便地进行升级。升级操作通常需要在 Candy 的安装目录进行,我们假设你的安装目录是
/www/candy
,让我们将 Candy 升级到最新版本吧:
如果你使用 Git clone Candy:
$ cd /www/candy
$ git pull
如果你使用 NPM 安装 Candy,采用这种方法升级可能会导致你在
/www/candy/node_modules/candy/node_modules
文件夹下的自定义主题被覆盖,所以应确保在升级之前,备份你的自定义主题。$ cd /www/candy
$ npm install candy@latest
配置 Candy
配置 Candy 是一条必经之路,没有一个主题或者配置清单可以适应所有的使用环境。因此,在将你的论坛搭建上生产环境服务器之前,确保通读这份配置指引。
管理员用户
第一个登录的用户会是 Candy 的管理员用户,确保你使用正确的社交网络账户登录 Candy,就可以开始自定义论坛了。 你可以在登录后的右侧菜单找到进入 管理面板 的入口,或者访问 localhost:3000/admin 进入管理面板。
app.js
启动脚本
配置脚本负责启动你的 Candy 论坛。这意味着在变更某些配置之后,你可能需要重新启动配置脚本。这个文件通常是
app.js
。
注意: 在生产环境启动 candy 时,请配置相应的环境变量以启动服务:
// 在 3001 端口启动服务,配置当前环境为 test:
$ PORT=3001 NODE_ENV='test' node app.js
使用 Docker build 启动镜像
Candy 提供了一份 Dockerfile 以便于使用 Docker 部署服务的使用者可以快速根据 ubuntu:14.04 的原始镜像编译出一份在 3000 端口暴露服务的 Docker Container:
- 通过 Candy 提供的 Dockerfile 编译镜像
$ sudo docker build -t /candy
- 启动镜像
// 在宿主机上绑定 8080 端口到此容器的 3000 端口,也就是 Candy 服务的端口
$ sudo docker run -p 8080:3000 -d /candy
- 找到镜像 ID (一串哈希或它的前三位)
$ sudo docker ps -l
- 打印镜像活动日志
$ sudo docker logs
测试 Candy (Debug 模式)
如果你启动的 Candy 实例遇到问题,可以开启 Debug 模式边运行边打印测试结果。你可以通过这样的方式启动 debug 模式:
// 在 3001 端口启动 debug 模式的 candy 实例:
$ DEBUG=candy PORT=3000 node app.js
// 或者直接使用快捷方式
$ cd candy
$ npm test
configs.json
配置文件
配置文件是启动脚本使用的初始配置,Candy 使用一个
json
文件当做配置文件。这个文件里规定了论坛初始化时的名字,简介,永久链接,运行环境,数据库信息等等内容。
如果你采用直接 clone 仓库的方式安装 Candy,配置文件为
./configs.json
,当然,你也可以将 Candy 视为 NPM 模块安装。这样的话,你可以在启动文件中传入配置参数,这里的配置参数与配置文件中的参数名称、规则相同。
这是配置文件
configs.json
的范例:{
"name": 'Candy',
"desc": 'some description for your very new Candy forum',
"public": "./public",
"uploads": "./public/uploads",
"views": "./node_modules/candy-theme-flat",
"database": {
"name": 'candy'
},
"session": {
"store": true
},
"duoshuo": {
"short_name": 'xxx',
"secret": 'xxx'
}
});
让我们来看看配置文件
configs.json
中的具体参数configs#name [String] 站点名称
configs#desc [String] 站点介绍
./public
)
configs#public [String] 静态资源目录 (默认为
./public/uploads
)
configs#uploads [String] 附件上传目录 (默认为
./node_modules/candy-theme-flat
)
configs#views [String] 默认主题目录 (默认为 configs#url [String] 站点永久链接
这是一个以 http 或 https 开头的 URL,这个 URL 只有在你将站点的运行环境设定为
production
时才会变成站点的根。configs#database [Object] 数据库信息
Candy 采用 Mongodb 构建。这是储存论坛数据库信息的对象。包括
- database.name [String] 数据库名称(必要)
- database.host [String] 数据库地址
- database.port [Number] 数据库运行端口
- database.options [Object] 数据库配置选项(参见 moogoose 文档)
configs#session [Object] session 持久化相关信息
- session.store [Boolean] 是否使用 Conenct-Mongo 做 session 持久化 (默认为
false
)
configs#duoshuo [Object] 多说相关信息
Candy 基于多说社交评论构建,因此,你需要提供一个多说
short_name
和相应的 secret
- duoshuo.short_name [String] 多说
short_name
(必要) - duoshuo.secret [String] 多说
secret
(必要)
Candy 主题系统
Candy 构建于 Theme 主题系统之上。这意味着你可以编写 NPM 模块,作为 Candy 的主题,并发布到 NPM,使所有使用 Candy 的用户受益。
- 所有主题遵守一套命名约定,必须采用
candy-theme-xxx
的命名规则进行命名,并发布到 NPM。 - 所有主题都必须按照一定规范书写
package.json
可以参照 Candy 的默认主题 candy-theme-flat 书写你的主题描述文件。 - 所有主题的静态资源文件夹都推荐放置于主题文件夹下的
static
目录。 - 所有主题模块均应位于 './node_modules' 文件夹内,小心升级模块时造成的文件覆盖。
No comments:
Post a Comment