0. 先决条件
名称 | 版本 | 链接 |
---|---|---|
NodeJS | >=10 | https://nodejs.org |
MySQL | >=5.7.27 | https://dev.mysql.com/downloads/mysql/ |
Redis | 最新版 | https://redis.io |
如遇到问题,请参见常见问题-汇总贴
1. 安装Lerna
$ npm i -g lerna
2. 克隆Cabloy仓库
$ mkdir cabloy-lerna
$ cd cabloy-lerna
$ git clone https://github.com/zhennann/cabloy.git
3. 安装依赖
$ cd cabloy
$ lerna bootstrap
4. 拷贝前端Config
cp -r src/front/_config src/front/config
5. 拷贝后端Config
cp -r src/backend/_config src/backend/config
6. 配置Redis
集群
现在已经成为CabloyJS
的一等公民。也就是说,CabloyJS项目随时做好准备,以便部署到集群环境中
CabloyJS的集群特性是基于Redis
设计的,因此,需要设置Redis的连接配置信息,这里以开发环境
为例:
src/backend/config/config.local.js
// redis
const __redisConnectionDefault = {
host: '127.0.0.1',
port: 6379,
password: '',
db: 0,
};
const __redisConnectionDefaultCache = Object.assign({}, __redisConnectionDefault, {
keyPrefix: `cache_${appInfo.name}:`,
});
const __redisConnectionDefaultIO = Object.assign({}, __redisConnectionDefault, {
keyPrefix: `io_${appInfo.name}:`,
});
config.redisConnection = {
default: __redisConnectionDefault,
cache: __redisConnectionDefaultCache,
io: __redisConnectionDefaultIO,
};
config.redis = {
clients: {
redlock: config.redisConnection.default,
limiter: config.redisConnection.default,
queue: config.redisConnection.default,
broadcast: config.redisConnection.default,
cache: config.redisConnection.cache,
io: config.redisConnection.io,
},
};
CabloyJS基于
Redis
实现了多个特性:limiter, queue, broadcast, cache
。这些特性默认都访问同一个Redis服务。当访问量上升后,可以考虑进行分离
7. 配置MySQL
EggJS
提供了三个运行环境,CabloyJS
针对每个运行环境实现了不同的数据库访问策略
,具体请参见:Config
因此,需要单独设置三个运行环境的数据库连接配置信息
7.1 测试环境
src/backend/config/config.unittest.js
// mysql
config.mysql = {
clients: {
// donnot change the name
__ebdb: {
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '',
database: 'mysql', // donnot change the name
hook: {
meta: {
long_query_time: 200,
},
},
},
},
};
名称 | 说明 |
---|---|
__ebdb | 这是系统内置的MySQL节点名,不允许变更 |
database | 指定为mysql ,在启动服务时,会自动删除旧的测试数据库,然后创建一个新的测试数据库 |
hook.meta.long_query_time | 如果sql语句执行时间超过long_query_time (ms),就会打印到控制台 |
7.2 开发环境
src/backend/config/config.local.js
// mysql
config.mysql = {
clients: {
// donnot change the name
__ebdb: {
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '',
database: 'mysql', // recommended
hook: {
meta: {
long_query_time: 0,
},
},
},
},
};
名称 | 说明 |
---|---|
database | 推荐指定为mysql ,在启动服务时,查找可用的测试数据库,如果没有找到就创建一个新的测试数据库 |
如果指定为其他具体的数据库名,就不再查找可用的测试数据库,而是直接使用此设定的数据库 | |
hook.meta.long_query_time | 如果long_query_time 为0 ,则把所有sql语句打印到控制台 |
7.3 生产环境
src/backend/config/config.prod.js
// mysql
config.mysql = {
clients: {
// donnot change the name
__ebdb: {
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '',
database: '{{name}}',
hook: {
meta: {
long_query_time: 500,
},
},
},
},
};
名称 | 说明 |
---|---|
database | 此数据库需要手工创建 |
hook.meta.long_query_time | 如果sql语句执行时间超过long_query_time (ms),就会打印到控制台 |
8. 测试
$ npm run test:backend
CabloyJS推荐测试驱动
的开发模式。通过测试驱动
可以锁定开发的成果,当有代码变更时,可以尽早的发现问题,从而解决问题
此外,开发阶段会经常的变更数据库设计,这时,只需要运行一遍单元测试就可以生效了(自动删除旧的测试数据库,然后自动创建一个新的测试数据库)
9. 运行
启动后端服务
$ npm run dev:backend
启动前端服务
$ npm run dev:front
10. 进入系统
- 网址:http://localhost:9192
- 用户名:root
- 密码:123456
11. Docker Compose
在项目根目录有一个docker-compose.yml
配置文件。如果您已经安装好了docker compose环境,那么可以一键启动CabloyJS所有的服务,包括Redis、MySQL、Nginx、以及CabloyJS后端服务
$ cp -r src/front/_config src/front/config
$ cp -r src/backend/_config src/backend/config
$ sudo docker-compose up
- 进入系统
- 网址:http://localhost/
- 用户名:root
- 密码:123456
12. 升级源码
在升级源码之后,别忘了再次安装依赖
$ lerna bootstrap
评论: