上篇文章,我已经讲过了,如何安装truffle框架,开始我们探索之旅,但是上篇文章是在开发环境下(执行testrpc)部署测试合约,这次我们将项目部署在 geth创建的私有链上。
今天我们接着上次的项目继续进行。
需要启动geth 创建的私有链。在这里需要定义好几个参数。
经过几天的反复在坑里爬,翻阅大量资料,最后使用这样的命名创建私有链:
geth --rpc --rpccorsdomain "*" --datadir "./" --port 30303 --rpcapi "db,eth,net,web3,personal,web3" --networkid 1234 --rpcport 8545 --rpcaddr "192.168.1.103" console 2>>geth.log
我要部署的主机位 192.168.1.103 ,所以需要定义rpcadddr '192.168.1.103' rpcport 8545
启动私有链后,我们需要解锁account[0] 账户,因为部署合约需要在account[0]解锁情况下进行。
我们默认打开20分钟有效,如下面命令:
personal.unlockAccount(eth.accounts[0],"password", 1000*60*20)
打开挖矿,否则部署合约的时候,无法被网络确认
miner.start()
我们需要对truffle.js配置一下
我们需要修改truffle.js,针对启动的链做一些配置:
require('babel-register')
module.exports = {
networks: {
development: {
//host: '192.168.1.103',
host: 'localhost',
port: 8545,
network_id: '*' // Match any network id
//network_id: '1234' // Setting network id is 1234
},
live:{
host: '192.168.1.103',
port: 8545,
network_id: '1234'
}
}
}
live:{
host: '192.168.1.103',
port: 8545,
network_id: '1234'
}
红色字体为新增部分,定义必须与启动geth私有链配置一致。
配置完成后,进入创建truffle项目的文件夹中。
开始编译合约
sudo truffle complie --complie-all
增加参数 --complie-all 是每次全部编译合约
开始部署合约
sudo truffle migrate --network live --reset
我们对部署合约参数做一些解释:
--network live,我们针对定义的这个网络进行部署。
--reset ,需要重新部署合约。
合约部署成功后,见下图
恭喜你,合约部署成功
开启服务,执行下面命令
开启服务之前,需要先启动如下命令:
sudo npm run build
执行成功后,如下如:
sudo truffle serve
服务启动成功后,我们在浏览器中输入 http://192.168.1.103:8080
要想修改 访问Port,请修改usr/lib/node_mondu/truffle/lib/serve.js这个文件
现在你已经成功将truffle项目部署在geth创建的私有链上了。
2017-12-10 写于深圳