前情提要:
已经搭建好区块链,现在的应用场景是在ubuntu服务器上部署Python sdk用于操控区块链,其他系统centos及macos系统请看官方技术文档,这里不再赘余。官方技术文档:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/sdk/python_sdk/install.html
1:环境要求
1.1:首先安装依赖环境
Ubuntu: sudo apt install -y zlib1g-dev libffi6 libffi-dev wget git
#这一步会产生一个solc文件夹
1.2:python环境要求
python 3.6.3/3.7.x
2:linux环境初始化
2.1:拉取源码
git clone https://github.com/FISCO-BCOS/python-sdk
#这一步产生一个python-sdk文件夹
2.2:配置环境(如果本身的python版本符合要求,可跳过这一步,因为这一步就是为了生成一个python 3.7.3的虚拟环境)
cd python-sdk && bash init_env.sh -p
分析上图错误提示:
init_env.sh: line 29: pyenv: command not found
所以需要激活pyenv:
source ~/.bashrc
激活之后,重新运行配置环境的命令:
cd python-sdk&&bash init_env.sh -p
bash init_env.sh -p主要功能是安装pyenv,并使用pyenv安装名称为 python-sdk 的python-3.7.3虚拟环境
2.3:激活python-sdk虚拟环境
source ~/.bashrc && pyenv activate python-sdk && pip install --upgrade pip
3:在虚拟环境安装python sdk的依赖
pip install -r requirements.txt
4:初始化配置
bash init_env.sh -i
5:配置channel通信协议
这一块的配置不明白的可以看官网详细的配置说明:https://fisco-bcos-documentation.readthedocs.io/zh_CN/lates删t/docs/sdk掉/python_sdk/co我nfiguration.html
5.1:配置channel信息
5.1.1:首先查看自己暴露的节点ip及channel端口(此处的暴露节点也就是与python sdk连接的节点)
vi ~/agencyB/node/node_XXX_30301/config.ini
5.1.2:修改client_config.py文件
cd ~/python-sdk
vi client_config.py
修改对应箭头指向的位置,因为我们使用channel通信,所以,client_protocol设置为channel;将remote_rpcurl置空,因为不采用rpc端口的方式;将channel_port修改为链内任意节点的物理机内网ip,端口号为对应的channel_port。
5.2:配置证书
将暴露节点的sdk中的sdk证书及私钥放到python-sdk的bin目录下
cp ~/agencyB/sdk/* ~/python-sdk/bin/
5.3:配置证书路径
从节点拷贝过来的sdk证书路径,将client_config.py中把sdk证书和私钥的路径配置好。
channel_node_cert="bin/sdk.crt"# 采用channel协议时,需要设置sdk证书,如采用rpc协议通信,这里可以留空
channel_node_key="bin/sdk.key"# 采用channel协议时,需要设置sdk私钥,如采用rpc协议通信,这里可以留空
若sdk证书和私钥路径分别为bin/node.crt和bin/node.key,则client_config.py中相关配置项如下。
channel_node_cert="bin/node.crt"# 采用channel协议时,需要设置sdk证书,如采用rpc协议通信,这里可以留空
channel_node_key="bin/node.key"# 采用channel协议时,需要设置sdk私钥,如采用rpc协议通信,这里可以留空
5.4:测试一下,使用channel协议访问节点
在python-sdk目录下面,确保python版本号3.7的情况下,运行console .py 文件查询。
# 获取FISCO BCOS节点版本号
python console.py getNodeVersion
至此,已经成功在一台ubuntu服务器上部署好了python sdk,可用于部署及编译合约,还可以类似控制台做查询工作等。
喜欢我的文章,就给我点赞呀~~