您现在的位置是:首页 >学无止境 >任务1-2 区块链系统部署与运维(15分)网站首页学无止境
任务1-2 区块链系统部署与运维(15分)
简介任务1-2 区块链系统部署与运维(15分)
目录
卸载旧版本的 Docker(如果您之前已经安装过 Docker)
更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用
再次查看已安装的 Mariadb 数据库版本,确认是否卸载完成
安装mysql-community-release-el7-5.noarch.rpm包
内容目录
- 关停防火墙,升级yum,升级其他元素等等
- 配置 docker+
- 配置 Java
- 配置 MySQL
- 配置 python
- 搭建 fisco 网络和控制台
- 搭建 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.key
和gm
文件夹-
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
平台运维
添加新主机
新增节点
修改新节点状态,并监控
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。