0


任务1-2 区块链系统部署与运维(15分)

内容目录

  1. 关停防火墙,升级yum,升级其他元素等等
  2. 配置 docker+
  3. 配置 Java
  4. 配置 MySQL
  5. 配置 python
  6. 搭建 fisco 网络和控制台
  7. 搭建 webase

基础配置

升级yum

yum update

安装 openJdk14(不推荐)

下载地址

Archived OpenJDK GA Releases (java.net)

查找旧版本

查看是否自带java
java -version

检测jdk的安装包
rpm -qa | grep java

批量删除这些安装包 
rpm -e --nodeps `rpm -qa | grep java

删除安装的java或jdk目录
which java
rm -rf /usr/bin/java

解压压缩包

用 winscp 上传到 /usr/lib 目录下

cd /usr/lib

解压到当前文件夹下

tar -zxvf openjdk-14.0.2_linux-x64_bin.tar.gz

删除安装包

rm -rf openjdk-14.0.2_linux-x64_bin.tar.gz

设置环境变量

vim /etc/profile

长按 i 进入插入模式,在最下面添加以下设置,Esc + :wq 保存退出

# JAVA environment
export JAVA_HOME=/usr/lib/jdk-14.0.2
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

刷新配置

source /etc/profile

测试一下吧

javac
java
Java -version

安装 Oraclejdk14(推荐)

下载地址

Java Archive Downloads - Java SE 14

使用 winscp 传到 /usr/lib/jvm 目录下

sudo tar -zxvf jdk-14_linux-x64_bin.tar.gz -C /usr/lib/jvm
cd /usr/lib/jvm && sudo mv jdk-14 /usr/lib/jvm/

进入 etc/profile 中修改环境变量

vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk-14
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

检查Java版本

java -version

安装 docker 20(推荐)

卸载旧版本的 Docker(如果您之前已经安装过 Docker)

sudo yum remove docker docker-common docker-selinux docker-engine

安装所需的依赖项

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置 Docker CE 的稳定版仓库:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum-config-manager --enable docker-ce-nightly

安装 Docker 20

sudo yum update && sudo yum install docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io

启动 Docker 服务

sudo systemctl start docker

验证 Docker 是否成功安装

sudo docker version

安装 docker18

安装依赖 curl、openssl

# ubuntu
sudo apt install -y curl openssl
# centos
sudo yum install -y curl openssl openssl-devel

安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

设置 yum 源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看 docker 版本

yum list docker-ce --showduplicates | sort -r

指定版本安装

yum install docker-ce-版本号
yum install docker-ce-18.06.3.ce

启动 docker 命令

systemctl start docker

docker 加入开机自启动

systemctl enable docker

MySQL 5.6 dokcer安装

使用docker安装,拉取镜像到本地

docker pull mysql:5.6

启动

docker run -id -p 3307:3306 --name=c_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

启动失败处理

1.停止 Docker 服务:可以使用以下命令停止 Docker 服务:
sudo systemctl stop docker
2.清除 iptables 规则:可以使用以下命令清除 iptables 规则:
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
3.重启 Docker 服务:可以使用以下命令重启 Docker 服务:
sudo systemctl start docker

停止并删除现有的容器
sudo docker stop c_mysql
sudo docker rm c_mysql

重新运行
docker run -id -p 3307:3306 --name=c_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

进入 MySQL 容器

docker exec -it c_mysql /bin/bash
mysql -uroot -p123456

python3 环境搭建

查看系统 python 位置

whereis python

切换到 python 路径下

cd /usr/bin

下载 python3 需要的依赖

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

centos7 添加 epel 扩展源

yum -y install epel-release
yum install python-pip
pip install --upgrade pip
pip install wget

使用 wegt 下载 python3

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
这里提示 pip 版本不正确
建议不使用 wegt 的方法下载
下载包通过 winscp 的方法传过去

解压

xz -d Python-3.6.8.tar.xz
tar -xf Python-3.6.8.tar

手动编译

cd Python-3.6.8

./configure prefix=/usr/local/python3

make && make install

安装依赖zlib、zlib-deve

yum install zlib zlib
yum install zlib zlib-devel

备份软链接

mv /usr/bin/python /usr/bin/python.bak

添加软链接

ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

测试

python -V

更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用

vi /usr/bin/yum

把第一行的#! /usr/bin/python 修改为如下

#! /usr/bin/python2

还有一个地方也需要修改

vi /usr/libexec/urlgrabber-ext-down

把第一行的#! /usr/bin/python 修改如下

#! /usr/bin/python2

最终测试

输入python2,提示python2.7.5

输入python,提示python3.6

docker 部署区块链网络

创建操作目录

cd ~ && mkdir -p fisco && cd fisco

下载脚本

curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/build_chain.sh && chmod u+x build_chain.sh

搭建单群组4节点区块链

  • 尽量使用-p 指定其他端口,以免启动管理平台时提示端口被占用
bash build_chain.sh -d -l 127.0.0.1:4 -p 30500,20500,8945

启动区块链

nodes/127.0.0.1/start_all.sh

检查容器

docker ps -a | egrep fiscobcos

查看节点

tail -f nodes/127.0.0.1/node0/log/log*  | grep connected

查看共识

tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

fisco 控制台部署

获取控制台

cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh

拷贝控制台配置文件

cp -n console/conf/config-example.toml console/conf/config.toml

修改配置文件

cd console/conf && vi config.toml

# 将端口修改为自己在 build_chain 时用 -p指定的端口
# 如 build_chain.sh -d -l"127.0.0.1:4" -p 30500,20500,8945
# 需要在 config.toml 文件中将 network 一项中的端口参数修改一下
[network]
peers=["127.0.0.1:20500"."127.0.0.1:20501"]    # The peer list to connect

配置控制台文件

cp -r nodes/127.0.0.1/sdk/* console/conf/
ls console/conf

启动

cd ~/fisco/console && bash start.sh

原生安装MySQL

检查系统中是否已安装 MySQL

rpm -qa | grep mysql

返回空值的话,就说明没有安装 MySQL

注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql 命令只是更新Mariadb数据库,并不会安装 MySQL 。

查看已安装的 Mariadb 数据库版本

rpm -qa|grep -i mariadb

卸载已安装的 Mariadb 数据库

rpm -qa|grep mariadb|xargs rpm -e --nodeps

再次查看已安装的 Mariadb 数据库版本,确认是否卸载完成

rpm -qa|grep -i mariadb

下载安装包文件

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

wegt 无效,需要升级

sudo yum install wget

安装mysql-community-release-el7-5.noarch.rpm包

rpm -ivh mysql-community-release-el7-5.noarch.rpm

cd 到安装目录,ls查看一下目录

cd /etc/yum.repos.d

查看可用的 mysql 安装文件

​yum repolist all | grep mysql 

安装mysql

yum install mysql-server

检查mysql是否安装成功

rpm -qa | grep mysql

启动 mysql 服务

systemctl start mysqld.service #启动 mysql
systemctl restart mysqld.service #重启 mysql
systemctl stop mysqld.service #停止 mysql
systemctl enable mysqld.service #设置 mysql 开机启动

设置密码

# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("这里输入root用户密码") where User='root';
mysql> flush privileges; 

设置远程主机登录

mysql> GRANT ALL PRIVILEGES ON *.* TO 'your username'@'%' IDENTIFIED BY 'your password';

为 root 账户添加远程登录能力

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";

原生搭建 WeBASE-front(不推荐)

下载安装包

cd ~/fisco
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.5/webase-front.zip

解压

unzip webase-front.zip
cd webase-front

拷贝sdk证书文件(build_chain的时候生成的)

  • 将节点所在目录nodes/${ip}/sdk下的所有文件拷贝到当前conf目录
  • 供SDK与节点建立连接时使用(SDK会自动判断是否为国密,且是否使用国密SSL)- 链的sdk目录包含了ca.crt, sdk.crt, sdk.keygm文件夹- gm文件夹包含了国密SSL所需的证书- 注,只有在建链时手动指定了-G(大写)时节点才会使用国密SSL
cp -r nodes/${ip}/sdk/* ./conf/

服务启停

启动: bash start.sh
停止: bash stop.sh
检查: bash status.sh 

docker 镜像快速搭建 WeBase

拉取镜像

docker pull fiscoorg/fisco-webase:v2.7.2

启动容器

  • 需要将生成的nodes目录的node0的配置、SDK证书挂载到容器中,并将容器内的日志挂载到/nodes/127.0.0.1/node0/front-log
docker run -d -v /nodes/127.0.0.1/node0:/data -v /nodes/127.0.0.1/sdk:/data/sdk -v /nodes/127.0.0.1/node0/front-log:/front/log --network=host -w=/data fiscoorg/fisco-webase:v2.7.2

MySQL 配置数据

创建 webase 用户

CREATE USER 'webase'@'localhost' IDENTIFIED BY '123456';

创建数据库

create DATABASE webasenodemanager;
create DATABASE webasesign;

将数据库所有权赋予本地 webase 账号

GRANT ALL PRIVILEGES ON webasenodemanager.* To 'webase'@'localhost';
GRANT ALL PRIVILEGES ON webasesign.* To 'webase'@'localhost';
quit

验证 WeBASE 账号

mysql -u webase -p123456
show databases;

一键部署 webase(推荐)

检查环境

  • Oracle JDK 8 至 14
  • MySQL-5.6及以上
  • Python3.6及以上
java -version
mysql --version
python --version

PyMySQL (python3.6+)

sudo yum -y install python36-pip
sudo pip3 install PyMySQL

检查服务器网络策略

  • 开放WeBASE管理平台端口:检查webase-web管理平台页面的端口webPort(默认为5000)在服务器的网络安全组中是否设置为开放。如,云服务厂商如腾讯云,查看安全组设置,为webase-web开放5000端口。若端口未开放,将导致浏览器无法访问WeBASE服务页面
  • 开放节点前置端口:如果希望通过浏览器直接访问webase-front节点前置的页面,则需要开放节点前置端口frontPort(默认5002);由于节点前置直连节点,不建议对公网开放节点前置端口,建议按需开放

启动防火墙

sudo systemctl start firewalld

添加需要开放的端口到防火墙规则中

sudo firewall-cmd --zone=public --add-port=5002/tcp --permanent

重新加载生效

sudo firewall-cmd --reload

确认端口生效

sudo firewall-cmd --list-ports

拉取部署脚本

wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.5/webase-deploy.zip

解压,进入目录

unzip webase-deploy.zip && cd webase-deploy

配置管理平台连接区块链系统

切换到区块链目录下

cd ~/fisco/webase-deploy

修改配置文件

vi common.properties
#将mysql.user和mysql.password改为webase和123456
# Mysql database configuration of WeBASE-Node-Manager 修改相应的MySQL
用户名密码等信息
mysql.ip=localhost
mysql.port=3306
mysql.user=webase      #修改此处
mysql.password=123456  #修改此处
mysql.database=webasenodemanager
sign.mysql.ip=localhost
sign.mysql.port=3306
sign.mysql.user=webase     #修改此处
sign.mysql.password=123456 #修改此处
sign.mysql.database=webasesign

使用命令启动管理平台服务

# 下载
python3 deploy.py installAll

# 启动
python3 deploy.py startAll

报错处理

  • 如果提示端口被占用
# 查看当前系统中哪个进程正在占用 8545 端口
lsof -i:8545

# 查看当前系统中哪个进程正在占用 8545 端口
COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node      12345   user   12u  IPv4 1234567      0t0  TCP *:8545 (LISTEN)

#PID 为 12345 的 node 进程正在占用 8545 端口。如果您想停止该进程:
sudo kill 12345

验证平台服务

初始默认的账户名是admin,密码是Abcd1234

http://localhost:5000

新节点创建,启动,检查操作(推荐)

查找脚本位置

find / -name gen_node_cert.sh

创建新节点

cd ~/fisco
bash ./webase-deploy/webase-node-mgr/script/deploy/gen_node_cert.sh -c nodes/cert/agency/ -o ./nodes/127.0.0.1/node4

修改新建节点配置

cd nodes/127.0.0.1
  • 拷贝 node0 文件 config.ini 文件到新建节点
cp node0/config.ini node4/config.ini
cp node0/conf/group.1.genesis node4/conf
  • 进入新建节点config.ini文件修改配置
vi node4/config.ini
将监听端口 20500 改为 20504
将监听端口 8945 改为 8949
将监听端口 30500 改为 30504

[rpc]
    channel_listen_ip=0.0.0.0
    channel_listen_port=20504
    jsonrpc_listen_ip=127.0.0.1
    jsonrpc_listen_port=8949
    disable_dynamic_group=false
[p2p]
    listen_ip=0.0.0.0
    listen_port=30504
    ; nodes to connect
  • 进入node4目录,拷贝节点启动停止指令文件
cd node4 && cp ../node0/*.sh .
  • 启动新节点
./start.sh

启动失败问题解决

[root@gen-173-168-063-126 node4]# ./start.sh
003f404c5163d7333f6d62e84d46983fc73fbedd20cc2882c0a47d1638bcac33
  Exceed waiting time. Please try again to start node4
Error: No such object: rootfisconodes127.0.0.1node4

# 解决方法:
vi start.sh
# 将中间行的一段 sleep 1.5 注释掉再次运行即可
  • 修改新节点配置,并查看节点的nodeid
# 进入conf目录,查看节点的nodeid
cd conf/ 
cat node.nodeid
# 复制 nodeid

# 进入console目录,启动Console控制台
cd /fisco/console && bash start.sh

# 将新节点作为观察节点加入群组1当中,并检查是否加入成功
# 查看观察节点列表
getObserverList

# 将新节点添加到观察节点列表中
addObserver (节点的nodeid)

# 检查是否加入成功
getObserverList

平台运维

添加新主机

新增节点

修改新节点状态,并监控

标签: 区块链 学习

本文转载自: https://blog.csdn.net/BingjieDreams/article/details/130903589
版权归原作者 BingjieDreams 所有, 如有侵权,请联系我们删除。

“任务1-2 区块链系统部署与运维(15分)”的评论:

还没有评论