1. 北竹林首页
  2. 资讯
  3. 技术指南

公链开发实战:本地环境准备之virtualbox篇

本来想先写几篇关于各个公链在本地开发的环境配置,但是我还是觉着应该先写下最基础的环境配置,工欲善其事必先利其器,先提升一下对于virtualbox的掌握,在本地搭建开发环境模拟生产环境是很有必要的,尤其是对于区…

本来想先写几篇关于各个公链在本地开发的环境配置,但是我还是觉着应该先写下最基础的环境配置,工欲善其事必先利其器,先提升一下对于virtualbox的掌握,在本地搭建开发环境模拟生产环境是很有必要的,尤其是对于区块链开发者尤为重要,因为往往需要模拟多台机器进行交互;

可能很多人会说没有必要,因为比如:

bitcoin core有regtest模式,所以可以跑单节点;

ETH有ganache和truffle dev可以模拟用软件模拟私链;

EOS可以用docker composer开启多个docker instance来交互;

但是对于一个完整的项目来说,链上操作只是其中一部分,我们肯定还需要很多链下操作的部分, 除非你的项目是纯粹运行在链上,一般纯粹在链上的项目往往也是要在几条不同的链之间交互,比如ETH和IPFS,开发环境也是需要多个节点的,再比如hyperledger也是要运行peer节点,orderer节点等多个节点,这里我还是主要说通常需要链下操作的情况,比如传统db,web api等。

这里的演示的宿主机器是windows,然后, virtualbox 版本6.0,

通常的要求就是数据库和后台服务运行在内网,然后区块链节点和网站程序等可以跟外网沟通,当然也会跟内网沟通。

下图是virtualbox的几种网络模式的能力对比:

公链开发实战:本地环境准备之virtualbox篇

> 摘自virtualbox文档:Host-only networking is particularly useful for preconfigured virtual appliances, where multiple virtual machines are shipped together and designed to cooperate. For example, one virtual machine may contain a web server and a second one a database, and since they are intended to talk to each other, the appliance can instruct Oracle VM VirtualBox to set up a host-only network for the two. A second, bridged, network would then connect the web server to the outside world to serve data to, but the outside world cannot connect to the database.

所以我们选择如下配置:
* vb1 运行数据库和后台服务: host-only模式
* vb2 运行区块链节点和网站服务: bridged 模式和 host-only模式

我们预期的结果是:

宿主机器可以跟vb1和vb2通信,通过ssh(默认端口 22, 对于windows用户本人墙裂推荐 winscp,太好用了!),
vb1 可以跟vb2通信,也可以跟宿主机器通信
vb2 可以跟一切通信,包括vb2/宿主机/外网

1. 搭建

首先在virtualbox创建一个hostonly adpter,

File=>host network manager

公链开发实战:本地环境准备之virtualbox篇

>>>vb1

公链开发实战:本地环境准备之virtualbox篇

公链开发实战:本地环境准备之virtualbox篇

>>>vb2

公链开发实战:本地环境准备之virtualbox篇

公链开发实战:本地环境准备之virtualbox篇

公链开发实战:本地环境准备之virtualbox篇

如上图所示,有时候dhcp server莫名其妙的不工作,无法给bridged模式分配ip,具体原因我没有深入研究,这个问题可以手动修复:
`dhclient eth0`
或者可以设置静态的ip
“`
vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address yourip
netmask 255.255.255.0
gateway your gateway
“`

公链开发实战:本地环境准备之virtualbox篇

2. 常用命令

“`
ifconfig
ip route show
route -n
cat /etc/network/interfaces
/etc/init.d/networking restart
service network-manager restart
ifdown eth0
ifup eth0
dhclient eth0
Ifconfig eth0 [ip] netmask 255.255.255.0 up
route add default gw [gateway] eth0
ip route add default via [gateway] dev eth0
“`

3. 更多探索

1) 我们甚至可以将vb2变成一个router,这样可以做很多有意思的事情,比如可以监控vb1的各种数据包

2) 有时候我们会遇到磁盘空间不足的情况,比如我就遇到过因为运行了多个docker导致磁盘空间不足,还有区块链节点同步数据导致空间不足,如果你不想重新来过一遍的话,可以选择下面的方式进行resize:
* 安装os前resize,一步即可:
`VBoxVBoxManage.exe modifyhd your.vdi –resize [targetsize]`

* 安装os之后resize,略微麻烦,亲测可用:
先用上面的步骤扩展vdi大小,然后再使用gparted进行分区扩展, 具体参考http://derekmolloy.ie/resize-a-virtualbox-disk/

主要参考资料:
https://www.virtualbox.org/manual/ch06.html

声明:登载此文出于传递更多信息之目的,观点仅代表作者本人,绝不代表北竹林赞同其观点或证实其描述。

提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

联系我们

QQ:

1739447883

邮箱:

1739447883@qq.com