本文章介绍Node.js区块链开发一书源码部署步骤。
亿书github地址为:https://github.com/Ebookcoin/ebookcoin 上面有部署说明,这里做了进一步解释。
一、系统环境:
官方部署到Ubuntu 14.04 ~ 16.10 (LTS) - x86_64,也可以部署到其他系统,比如centos,mac os
1.1 安装必要的依赖包(命令行操作):
• Ubuntu:
sudo apt-get update
sudo apt-get install curl build-essential python
• centos:
yum install -y curl python gcc g++ kernel-devel gcc-c++
1.2 安装SQLite3 (version 3.8.2)数据库:
• Ubuntu:
sudo apt-get install -y sqlite3
• centos:
yum install sqlite
• mac:
brew install sqlite3
如果没有安装brew,执行以下命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
1.3安装Node.js:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
nvm install 4.6.2
二、配置工程
2.1 安装npm全局模块:
国内推荐使用淘宝cnpm安装,稳定而且速度快
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g grunt-cli
cnpm install -g bower
-g 代表全局安装
2.2 下载源码:
git clone https://github.com/Ebookcoin/ebookcoin.git
进入目录,安装依赖模块
cnpm install
2.3 下载源码子模块(client和ebookcoin-js)
上面克隆的代码public文件夹为空,下面子模块代码将自动存放到public
git submodule init
git submodule update
如果报错,Error: Permission denied (publickey),需要配置ssh访问github
cd ~/.ssh/
查看是否有id_rsa id_rsa.pub这两个文件,如果没有使用下面命令生成,邮箱改成自己的github账户
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
中间会出现三次询问,直接按回车即可。
执行后在~/.ssh/目录会产生上面的文件,通过cat id_rsa.pub查看内容,复制下来,稍后会用到。
登陆github,点击个人头像-setting-SSH and GPG keys,添加一个ssh key,将上面复制的内容粘贴进去,重新执行git submodule update
2.4 构建前端
cd public
cnpm install
bower install
grunt release
其中bower install是下载前端资源,bootstrap angularJS jQuery等,Centos系统使用root执行此命令报错,改成bower install --allow-root
grunt release是自动部署命令
三、运行
cd ..
node app.js
正常启动后日志显示Peers list is empty,即节点列表为空,可以将整个ebookcoin复制,启动多个节点,通过 node app.js –p 指定端口号 –x 指定节点比如:
node app.js –p 7001 –x 127.0.0.1:7000
浏览器访问7000端口,如果浏览器控制台报错angular.module(...).info is not a function,使用命令vi public/static/js/vendor_app.js +19383 ,将vendor_app.js 19383行注释掉,注释内容为
angular.module('ngResource', ['ng']).
// info({ angularVersion: '1.6.6' }).
provider('$resource', function ResourceProvider() {
注册账户默认没有亿书币,有些功能用不了,通过sqlite blockchain或者sqlite blockchain修改mem_accounts表中balance字段金额即可。