一般来说,一台服务器上只会跑一个墨客子链节点。但是因为测试需要,我们可能会在一台服务器上部署多个子链节点。这也是可以的,但我们就必须保证各个线程不会互相干扰,尤其是当我们跑FileStorm子链的时候,我们必须保证每个节点底层的IPFS Daemon是独立的。所以,我们把流程写在下面。所有的指令在Macbook上执行,其他机型需要做相应调整。
前提条件:
机器上必须安装redis, ipfs daemon, scsserver和ipfs_monkey.
redis安装流程:
sudo apt update
sudo apt full-upgrade
sudo apt install build-essential tcl
curl -O http://download.redis.io/redis-stable.tar.gz
tar xzvf redis-stable.tar.gz
sudo apt install redis-server
ipfs daemon安装流程
从这个链接下载最新版本ipfs软件包。我们以ubuntu版本为例
wget https://dist.ipfs.io/go-ipfs/v0.4.17/go-ipfs_v0.4.17_linux-amd64.tar.gz
tar xvfz go-ipfs_v0.4.17_linux-amd64.tar.gz
sudo mv go-ipfs/ipfs /usr/local/bin/ipfs
scsserver和ipfs monkey的安装流程
scsserver 可以通过 make scs 生成。
ipfs_monkey 可以通过 make monkey 生成。
(将来会发布一个能从我们的github下载的版本。)
环境部署要求:在本机上建立三个独立运行的FileStorm子链节点。
首先,我们必须建立三个ipfs daemon,建立方法如下:
IPFS_PATH=~/.ipfs2 ipfs init
IPFS_PATH=~/.ipfs3 ipfs init
IPFS_PATH=~/.ipfs4 ipfs init
这样,我们就建立了三个ipfs节点,他们的根目录分别是/.ipfs2,/.ipfs3,~/.ipfs4。
然后,我们必须修改ipfs的设置,修改设置可用如下指令:
vi ~/.ipfs2/config
然后找到如下设置,将4000,5000和8080改掉。因为我们的ipfs根目录是~/.ipfs2,可将三个数字改成4002,5002,8082。
"Addresses": {
"Swarm": [
"/ip4/0.0.0.0/tcp/4000",
"/ip6/::/tcp/4002"
],
"Announce": [],
"NoAnnounce": [],
"API": "/ip4/127.0.0.1/tcp/5000",
"Gateway": "/ip4/127.0.0.1/tcp/8080"
},
然后把另外两个ipfs设置也做相应修改
`vi ~/.ipfs3/config
将三个数字改成4003,5003,8083。
`vi ~/.ipfs4/config
将三个数字改成4004,5004,8084。
接下来,我们要把下载的scsserver目录复制三份,放在三个目录下。
~/Test/scsnode2
~/Test/scsnode3
~/Test/scsnode4
目录的结构应该是
config
userconfig.json
bin
scsserver
ipfs_moneky
然后,我们需要修改一下scsserver的设置文件config/userconfig.json。
{
"VnodeServiceCfg": "localhost:50062",
"SCSServiceCfg": "localhost:50061",
"DataDir": "./scsdata",
"LogPath": "./_logs",
"Beneficiary": "0xa801aa91c91c9354140b40cf9aa9c89969e0c044",
"VnodechainId": 1975,
"Capability": 10,
"ReconnectInterval": 5,
"LogLevel": 4,
"FileStorm": {
"IpfsDir": "/Users/xiannongfu/.ipfs2",
"MonkeyPort": 18080
}
}
对下面的设置做修改:
"FileStorm": {
"IpfsDir": "[选取一个IPFS节点路径]",
"MonkeyPort": [选取一个ipfs_monkey端口]
}
其他设置参考子链部署文档。
设置完以后,我们就可以将FileStorm节点需要跑的程序都开启了。
首先是到每个节点执行文件所在的路径下。然后所有的文件执行都放到后台运行。
第一个执行的是 ipfs daemon,这个其实不跑也没关系,因为scsserver开启时,会根据userconfig.json文件中地址开启相应的daemon。
第二个执行的是 redis。执行端口要指明。
第三个执行的是 ipfs_monkey,这个要指明三个端口,分别是自己的监听端口,redis端口和ipfs api端口。
第四个执行的是 scsserver。请注意,如果需要通过连接到某个SCS节点上来调用子链上的状态,必须用--rpcaddr和--rpcport来打开一个SCS的RPC端口。
cd ~/Test/scsnode2/bin
nohup IPFS_PATH=~/.ipfs2 ipfs daemon &
nohup redis-server --port 6372 &
nohup ./ipfs_monkey --listen-host-port 127.0.0.1:18082 --redis-host-port 127.0.0.1:6372 --ipfs-host-port 127.0.0.1:5002 &
nohup ./scsserver &
cd ~/Test/scsnode3/bin
nohup IPFS_PATH=~/.ipfs3 ipfs daemon &
nohup redis-server --port 6373 &
nohup ./ipfs_monkey --listen-host-port 127.0.0.1:18083 --redis-host-port 127.0.0.1:6373 --ipfs-host-port 127.0.0.1:5003 &
nohup ./scsserver &
cd ~/Test/scsnode4/bin
nohup IPFS_PATH=~/.ipfs4 ipfs daemon &
nohup redis-server --port 6374 &
nohup ./ipfs_monkey --listen-host-port 127.0.0.1:18084 --redis-host-port 127.0.0.1:6374 --ipfs-host-port 127.0.0.1:5004 &
nohup ./scsserver --rpcaddr 127.0.0.1 --rpcport 2345 &
这样,一台服务器上的三个SCS节点就跑起来了。
网友评论