您现在的位置是:首页 >学无止境 >任务1-2 区块链系统部署与运维(15分)网站首页学无止境

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

BingjieDreams 2024-07-23 00:01:02
简介任务1-2 区块链系统部署与运维(15分)

目录

内容目录

基础配置

升级yum

安装 openJdk14(不推荐)

下载地址

查找旧版本

解压压缩包

设置环境变量

测试一下吧

安装 Oraclejdk14(推荐)

下载地址

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

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

检查Java版本

安装 docker 20(推荐)

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

安装所需的依赖项

设置 Docker CE 的稳定版仓库:

安装 Docker 20

启动 Docker 服务

验证 Docker 是否成功安装

安装 docker18

安装依赖 curl、openssl

安装需要的软件包

设置 yum 源

查看 docker 版本

指定版本安装

启动 docker 命令

docker 加入开机自启动

MySQL 5.6 dokcer安装

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

启动

启动失败处理

进入 MySQL 容器

python3 环境搭建

查看系统 python 位置

切换到 python 路径下

下载 python3 需要的依赖

centos7 添加 epel 扩展源

使用 wegt 下载 python3

解压

手动编译

安装依赖zlib、zlib-deve

备份软链接

添加软链接

测试

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

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

还有一个地方也需要修改

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

最终测试

docker 部署区块链网络

创建操作目录

下载脚本

 搭建单群组4节点区块链

启动区块链

检查容器

查看节点

查看共识

fisco 控制台部署

获取控制台

拷贝控制台配置文件

修改配置文件

配置控制台文件

 启动

原生安装MySQL

检查系统中是否已安装 MySQL

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

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

卸载已安装的 Mariadb 数据库

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

下载安装包文件

wegt 无效,需要升级

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

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

查看可用的 mysql 安装文件

安装mysql

检查mysql是否安装成功

启动 mysql 服务

设置密码

设置远程主机登录

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

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

下载安装包

解压

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

服务启停

docker 镜像快速搭建 WeBase

拉取镜像

启动容器

 MySQL 配置数据

创建 webase 用户

创建数据库

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

验证 WeBASE 账号

 一键部署 webase(推荐)

检查环境

PyMySQL (python3.6+)

检查服务器网络策略

拉取部署脚本

解压,进入目录

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

切换到区块链目录下

修改配置文件

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

报错处理

验证平台服务

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

查找脚本位置

创建新节点

修改新建节点配置

平台运维

添加新主机

新增节点

修改新节点状态,并监


内容目录

  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

平台运维

添加新主机

新增节点

修改新节点状态,并监控

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。