本地下载编译源码
服务器环境安装
服务器配置
安装nodejs
安装pm2
安装Redis
安装Mongodb
部署AntColony
运行
修改配置文件
创建必要的文件夹
启动
问题
pm2的版本
多久有数据
其他
##本地下载编译源码
这里要求本地已安装nodejs,grunt,git。
下载源码和依赖包:
git clone https://github.com/keenwon/antcolony
cd antcolony
npm install --development
使用grunt编译得到一份部署用的代码:
grunt
这样dist
目录下就是用来部署的文件。
##服务器环境安装 ####服务器配置 下面的示例安装,是在一台VPS上执行的,配置如下:
- Memory: 2G
- Disk: 40G SSD
- Processor: 2 Core
- Image: Centos6.5 x64
####安装nodejs
nodejs版本:0.10.31
我的安装过程参考这里
###安装pm2
pm2版本:0.10.7(最新版本,以代码方式启动不了)
这个版本的pm2在root用户下安装要指定额外的参数,如果非root用户不需要加--unsafe-perm
:
npm install pm2@0.10.7 -g --unsafe-perm
####安装Redis
redis版本:2.8.13
我的安装过程参考这里
安装好之后设置密码:
redis-cli
CONFIG SET requirepass 123456
####安装Mongodb
mongodb版本:2.6.4
我的安装过程参考这里
安装好之后创建新的数据库antcolony
,并且设置用户名antcolony、密码123456
####部署AntColony
把前面的dist
目录上传至服务器,安装依赖包:
npm install --production
因为要以代码的方式调用pm2,所以还要在当前目录安装,前面提到了root和非root用户参数不一样,所以没有列在依赖项中:
npm install pm2@0.10.7 --save --unsafe-perm
##运行
####修改配置文件
运行之前先修改配置文件config.js
redisHost: '127.0.0.1',
redisPort: 6379,
redisAuth: '123456',
mongodbHost: '127.0.0.1',
mongodbPort: 27017,
mongodbDatabase: 'antcolony',
mongodbUserName: 'antcolony',
mongodbPassword: '123456',
启动worker之前,要先在config.js
里面设置worker的相关参数。例如设置端口号是3000的worker:
worker: {
3000: {
sended: true, // 是否发送find_node
cycle: 20 // 周期,每隔多少毫秒发送一次find_node
}
}
####创建必要的文件夹 在AntColony的两个文件夹:log(日志)和.temp(临时存放种子文件):
mkdir log
mkdir .temp
####启动 启动端口号3000的worker:
node startup worker 3000
启动ID为1的male:
node startup male 1
启动ID为1的female:
node startup female 1
##问题
####pm2的版本
第一次安装最新版本的pm2,执行后没有任何反应,排查一下没发现问题,安装回旧版本的就好了。
但是这次发现执行pm2 list
,App name显示不正常,重装依然无效。但是在pm2 monit
中的name显示是正常的。
pm2挺好用的,但是问题也不少,新版本应该有不少改进,但是最近没空去了解,如果你要新版本的pm2的话,可以用下面的方法启动AntColony:
pm2 start src/queen.js -f --name worker[3000] -- worker 3000
pm2 start src/queen.js -f --name worker[3001] -- worker 3001
pm2 start src/queen.js -f --name male[1] -- male 1
pm2 start src/queen.js -f --name female[1] -- female 1
上面启动了两个worker,一个male,一个female。
####多久有数据 这个不一定,和网络等都有关系。不过这次部署,很快就有数据了:
{
"db" : "antcolony",
"collections" : 3,
"objects" : 74,
"avgObjSize" : 676.7567567567568,
"dataSize" : 50080,
"storageSize" : 188416,
"numExtents" : 5,
"indexes" : 1,
"indexSize" : 8176,
"fileSize" : 67108864,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1
}
####其他 有其他问题请新建issue交流。