Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

212 lines (152 sloc) 5.04 KB

AntColony部署文档

本地下载编译源码

这里要求本地已安装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
}

worker、male和female的比例问题

在Antcolony的设计里,worker,male和female都是独立的,可以启动任意数量。不过为了更高效率,一般的原则是:

  • 如果你觉得抓取的太慢,可以多启动几个worker
  • 如果你Redis里有很多待处理的infohash(worker抓取到的),可以多启动些male
  • 如果你的.temp目录积压了很多种子文件,可以多启动几个female

其他

有其他问题请新建issue交流。

You can’t perform that action at this time.