注意:
本系列文章遇到的问题都可以参考查找 官方文档 或 本系列问题总结!
FISCO-BCOS 及 WeBase 问题记录
FISCO-BCOS 官方文档
WeBase 官方文档
前提条件
环境 | 版本 |
---|---|
Java | JDK8或以上版本 |
MySQL | MySQL-5.6或以上版本 |
Python | Python3.4+ |
PyMySQL | 使用python3时需安装 |
重要提示:
目前FISCO BCOS还不算完善,所以在搭建浏览器以及后面WeBASE调试时,需要使用谷歌浏览器,而不要使用新版Edge
可以参考本文Java环境配置
此处以Centos安装MariaDB为例。MariaDB数据库是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。MariaDB完全兼容 MySQL,包括API和命令行。
首先在服务器安全组规则中加入3306端口,这是mysql的默认端口
sudo yum install -y mariadb*
下面为mysql安装
sudo yum install -y mysql*
# 启动
sudo systemctl start mariadb.service
sudo systemctl start mysqld.service
# 停止
sudo systemctl stop mariadb.service
sudo systemctl enable mariadb.service
执行以下命令:
sudo mysql_secure_installation
以下根据提示输入:
Enter current password for root (enter for none):<–初次运行直接回车
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
这一步之前一定先要将3306端口添加到安全组规则
至于如何添加安全组规则,可以参考本文安全组规则部分
mysql -uroot -p -h localhost -P 3306
mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql > flush PRIVILEGES;
- 例子中给出的数据库密码(123456)仅为样例,强烈建议设置成复杂密码
- 例子中root用户的远程授权设置会使数据库在所有网络上都可以访问,请按具体的网络拓扑和权限控制情况,设置网络和权限帐号
mysql > GRANT ALL PRIVILEGES ON *.* TO 'test'@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql > flush PRIVILEGES;
-p后面为自己的密码
mysql -utest -p123456 -h localhost -P 3306
mysql > create database db_browser;
mariaDB是完全兼容mysql的,所以安装完mariaDB之后,使用mysql的命令方式完全可行
sudo yum install -y python-requests
下列命令为指定安装 python3.6.*版本
sudo yum install -y python36
可以使用
python3 --version
命令查看python3版本号
若没有修改py默认版本,可以使用python --version
命令查看python2版本号
(可以不进行修改,后面使用python时输入python3就行,因担心导致bug,本人没有修改默认版本)
因为yum需要python2.7做支持,所以需要对其修改
vim /usr/bin/yum
# 打开后将第一行修改
#!/usr/bin/python
修改为
#!/usr/bin/python2.7
修改urlgrabber-ext-down配置
vim /usr/libexec/urlgrabber-ext-down
将第一行
#! /usr/bin/python
修改为
#! /usr/bin/python2.7
删除原有的软连接
rm -rf /usr/bin/python
建立新的软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python(连接位置为python3安装目录)
1、Python3.4及以上版本,需安装PyMysql依赖包。
sudo pip3 install PyMySQL
不支持pip命令的话,可以使用以下方式:
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install
注意:使用python2.7+时,需安装MySQL-python
sudo yum install -y MySQL-python
yum install git
git clone https://github.com/FISCO-BCOS/fisco-bcos-browser.git
可以使用以下命令修改,也可以直接修改文件(vim common.properties)
数据库需要提前安装
服务端口不能小于1024
数据库IP:sed -i "s/127.0.0.1/${your_db_ip}/g" common.properties
数据库端口:sed -i "s/3306/${your_db_port}/g" common.properties
数据库用户名:sed -i "s/dbUsername/${your_db_account}/g" common.properties
数据库密码:sed -i "s/dbPassword/${your_db_password}/g" common.properties
数据库名称:sed -i "s/db_browser/${your_db_name}/g" common.properties
前端服务端口:sed -i "s/5100/${your_web_port}/g" common.properties
后端服务端口:sed -i "s/5101/${your_server_port}/g" common.properties
例子(将数据库IP由127.0.0.1改为0.0.0.0):sed -i "s/127.0.0.1/0.0.0.0/g" application.yml
cd fisco-bcos-browser/deploy
此处因为安装了python3,配置了PyMySQL环境,并且没有修改python默认版本,才可以使用python3命令
python3 deploy.py installAll
其他指令:
# 停止所有服务:
python3 deploy.py stopAll
# 启动所有服务:
python3 deploy.py startAll
# 单独启停命令和说明可查看帮助
python3 deploy.py help
如果在此过程中遇到问题 可以在此文查看!
例如:在浏览器输入以下访问地址,IP为部署服务器IP,端口为前端服务端口
http://服务器ip:5100/
由于我们是单群组,所以也可得知群组id为1,其他信息随意输入
IP:127.0.0.1
rpc接口:8545
p2p接口:30300
IP:127.0.0.1
rpc接口:8546
p2p接口:30301
IP:127.0.0.1
rpc接口:8547
p2p接口:30302
IP:127.0.0.1
rpc接口:8548
p2p接口:30303
这些节点的信息可以通过如下路径查看
/root/fisco/nodes/127.0.0.1/node0/config.ini
[rpc] channel_listen_ip=0.0.0.0 channel_listen_port=20200 jsonrpc_listen_ip=127.0.0.1 jsonrpc_listen_port=8545 [p2p] listen_ip=0.0.0.0 listen_port=30300 ; nodes to connect node.0=127.0.0.1:30300 node.1=127.0.0.1:30301 node.2=127.0.0.1:30302 node.3=127.0.0.1:30303
/root/fisco/nodes/127.0.0.1/node1/config.ini
/root/fisco/nodes/127.0.0.1/node2/config.ini
/root/fisco/nodes/127.0.0.1/node3/config.ini
这里可以将前面的HelloWorld合约进行上产编译部署一下试一试。
合约内容可以 参考官方文档!
首先创建一个空白文本,将合约内容粘贴上去
pragma solidity ^0.4.24;
contract HelloWorld {
string name;
function HelloWorld() {
name = "Hello, World!";
}
function get()constant returns(string) {
return name;
}
function set(string n) {
name = n;
}
}
将该文本命名为 HelloWorld.sol
上传 并 进行编译
编译等待时间较长的话多刷新几次就好!
部署日志:log/
后端日志:server/log/
前端日志:web/log/