obc安装步骤

朋友们可能会好奇,厨师不研究菜谱怎么改研究兵法了,哈哈,我原本是app出身,最近被安排去预研区块链和比特币技术,2个月下来,颇有斩获。期间得到IBM的CC同学指导我一步一步安装obc的环境。学习期间,把安装步骤整理下来,以飨后人。

这门技术我的感受是,噱头更多一些,它里面有很深刻的思想在里面,但还很难应用到现实中,尤其是金融行业之外的其他垂直领域。所以接下来有机会,我要写本《区块链:从入门到放弃》的书。

咸盐少叙,赶快介绍OBC的安装步骤:

1.下载并安装Vagrant和VitualBox。

http://www.vagrantup.com/downloads

https://www.virtualbox.org/wiki/Downloads

注:接下来的步骤如果安装官方文档,必死无疑,我曾经卡了耽误很久,因为很多网站国内不能访问。为此,我们采取折中的办法,把被屏蔽的网址上的下载文件,通过其他渠道提前下载好,然后手动安装。

2.下载ubunta镜像。

https://atlas.hashicorp.com/obc/boxes/dev-env/versions/0.2.1/providers/virtualbox.box

改个名字吧,比如重命名为openchain.iso,叫什么不重要,只是为了好认。

3.把镜像添加到vagrant中。

vagrant box add --name obc/dev-env /Users/baojianqiang/Downloads/blockchain.iso

其中,最后一个参数是ubunta镜像在本机的路径,上面这个路径是我本机的存放路径。

关于vagrant本地添加box镜像的更多介绍,请参见:

http://www.imooc.com/qadetail/62953

4.启动镜像

首先,进入到obc-dev-env所在的目录,执行vagrant up命令,Vagrant会执行目录下的Vagrantfile文件

注:我们事先要修改一下这个Vagrantfile文件:

1)      删除config.vm.box_version这行,否则手动安装就不能进行。

2)      删除./setup.sh这行。我们要手动执行setup.sh脚本。

接下来,运行vagrant ssh命令启动镜像。

这时看光标所在的那行,你会发现,我们进入到vagrant的ubunta系统了,接下来执行的命令都将在ubunta上运行。

同时你可以启动VisualBox,有3个共享目录,这是在Vagrantfile文件中设置过的结果,主机和虚机的目录映射关系如下:

此外,输入node –v,会检查到虚机上安装的是v0.12.7版本。输入git version,会检查到虚机上安装的是1.9.1版本。

5.手动逐步执行setup.sh脚本

Vagrantfile文件会执行脚本文件setup.sh。这个脚本主要干了几件事情:

1)      Ubunta系统更新

2)      下载并安装Docker

3)      安装python相关(包括pip、behave和nose)

4)      更新flask、python-dateutil、pytz、pyyaml、conchdb、flask-cors和requests

5)      下载并安装GO

6)      下载并安装RocksDB,并设置CGO_CFLAGS和CGO_LDFLAGS

7)      下载并安装ProtoBuf

8)      配置RocksDB(为此需要创建目录、开权限然后更新limits.conf)

我们要修改这个脚本文件,因为里面有些东西下载不了。

删除docker run --rm busybox echo All good这行,这是为了测试Docker安装是否成功的,只是一个测试,但是这次测试要下载busybox,而这个在国内是不能访问的,所以干脆删除不执行了。

先做一些准备工作

1)获取ubunta虚机的root权限,输入su命令,要去我们输入密码。ubunta虚机的默认账户和密码都是vagrant。

接下来进入到虚机的vagrant目录,对应本机的obc-dev-env目录:

cd /vagrant

2)在Ubunta系统,想要执行一个sh脚本,需要输入以下命令:

chmod +x setup.sh

./setup.sh

接下来我把setup.sh脚本文件拆分为若干小的文件,每个文件只干一件事情:

1)setup1.sh

下载并安装Docker

2)setup2.sh

下载并安装python、pip、behave和nose

更新一些插件,如flask。

3)setup3.sh

安装go语音环境。

这会间接执行installGolang.sh脚本。脚本中有两句话可能会不能执行,因为golang.org在国内不能正常访问:

# Install Golint and goimports

go get github.com/golang/lint/golint

go get golang.org/x/tools/cmd/goimports

go get语句的作用是先下载,然后在下载的目录中执行go install,后面这个命令会生成结果文件(可执行文件或.a包,然后将其转移到$GOPATH/bin目录下)。

解决方案是,我们手动将其下载,然后复制到共享目录,接下来手动执行go install即可

这时候在命令行输入go还提示我们找不到该命令。进入到etc/profile.d目录,对gopath.sh文件执行source命令:

cd /etc/profile.d

source gopath.sh

4)setup4.sh

下载并安装RocksDB和Protobuf

进入到etc/profile.d目录,对gopath.sh文件执行source命令:

cd /etc/profile.d

source rocksLDLibrary.sh

注:每打开一个ssh窗体,都要执行第3步和第4步这两个source命令。

《区块链:从入门到放弃》之obc安装步骤的更多相关文章

  1. 区块链侧链应用开发平台Asch节点安装及区块生产教程

    1 系统要求 必须是linux系统 必须有公网ip 建议使用ubuntu 14.04 64位 建议内存1G以上 建议带宽2Mb以上 2 安装 2.1 下载 wget https://www.asch. ...

  2. hadoop入门学习教程--DKHadoop完整安装步骤

    使用hadoop版本是DKH标准三节点发行版,DKHadoop版本的易用性比较好,环境部署要简单的多,参考此篇安装前请先下载DKHadoop版本,网盘链接:https://pan.baidu.com/ ...

  3. saltstack入门至放弃之salt安装部署

    学习了一段时间的saltstack,是时候记录下了.友提:学习环境是两台centos_7.2_x64机器 系统初始化: 两台机器执行以下脚本即可(友提:两台服务器的主机名配置在/etc/hosts中, ...

  4. 区块链开发(四)Nodejs下载&安装

    以太坊框架truffle的安装需要依赖nodejs中的npm命令,本篇博客我们就简单介绍一下node的安装过程.操作系统基于ubuntu 16.04版本. 下载地址 nodejs官网:http://w ...

  5. 用Java为Hyperledger Fabric(超级账本)编写区块链智能合约链代码

    编写第一个 Java 链代码程序 在上一节中,您已经熟悉了如何构建.运行.部署和调用链代码,但尚未编写任何 Java 代码. 在本节中,将会使用 Eclipse IDE.一个用于 Eclipse 的 ...

  6. 区块链技术(一):Truffle开发入门

    以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架,这是我们第一篇区块链技术文章介绍truffle的原因,实战是最重要的事情,这篇文章不讲原理,只 ...

  7. C#区块链零基础入门,学习路线图 转

    C#区块链零基础入门,学习路线图 一.1分钟短视频<区块链100问>了解区块链基本概念 http://tech.sina.com.cn/zt_d/blockchain_100/ 二.C#区 ...

  8. 区块链入门级别认知(blockchain)

    区块链入门级别认知(blockchain) 前言:今天参加了迅雷关于区块链的大会,学习和感受总结一下 之前的认知在:几个混迹互联网圈关于区块链 耳熟能详的 热词 “比特币” “区块链” “挖矿” ,知 ...

  9. 以太坊开发DApp入门教程——区块链投票系统(一)

    概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...

随机推荐

  1. ZooKeeper典型应用场景

    ZooKeeper典型应用场景一览 数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新.例 ...

  2. 生成n位随机字符串

    --1.借助newid() Go --创建视图(因为在函数中无法直接使用newid()) create view vnewid as select newid() N'MacoId'; go --创建 ...

  3. phpmyadmin密码字段加密方法

    UPDATE member SET password=md5('password')

  4. 生成唯一32位ID编码代码Java(GUID)

    源码下载链接:http://pan.baidu.com/s/1jGCEWlC 扫扫关注"茶爸爸"微信公众号 坚持最初的执着,从不曾有半点懈怠,为优秀而努力,为证明自己而活. /* ...

  5. EntityFramework Core迁移时出现数据库已存在对象问题解决方案

    前言 刚开始接触EF Core时本着探索的精神去搞,搞着搞着发现出问题了,后来就一直没解决,觉得很是不爽,借着周末好好看看这块内容. EntityFramework Core迁移出现对象在数据库中已存 ...

  6. MySQL时间差返回月个数

    select PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m')) 1. MySQL 为日期增加一个时间间隔: ...

  7. 从输入URL到浏览器显示页面发生了什么

    1.输入网址 当你开始输入网址比如www.cnblogs.com时游览器就可以在书签或者历史记录里面去搜索相关的网址推荐给你. 2.游览器查找域名的IP地址 ① 请求发起后,游览器首先会解析这个域名, ...

  8. 重置Visual Studio 2017的配置

    1,从命令行进入VS 2017安装目录下面的Common7\IDE文件夹. 例如,Windows 10系统中 VS 2017 企业版的默认安装目录如下: C:\Program Files (x86)\ ...

  9. JavaScript(ES6)学习笔记-Set和Map数据结构(一)

    一.Set 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. , , , , ']); s; // ...

  10. 使用pickle进行存储变量

    有时候我们需要把我们的变量内容存下来,这时我们就可以用pickle来操作. 存储操作如下所示: #!/usr/bin/python # -*- coding:utf-8 -*- import pick ...