Loading... <div class="tip share">请注意,本文编写于 656 天前,最后修改于 174 天前,其中某些信息可能已经过时。</div> 记录一下所需要的安装程序,接下来可能要做迁移,东西要重新弄过,有点麻烦的。 ## Hyper-V虚拟机配置 ### 网络配置 开启电脑Hyper-V功能,在Hyper-V中添加一个内部交换机(假设取名为NAT-VM),然后在管理员权限的Powershell/Windows Terminal中执行一下命令 ```powershell #查看 NAT-VM 的 ifindex Get-NetAdapter #创建ip,InterfaceIndex参数自行调整为上一步获取到的ifindex。这一步等同于在 控制面版-网卡属性 中设置ip New-NetIPAddress -IPAddress 192.168.56.1 -PrefixLength 24 -InterfaceIndex 6 #创建nat网络,这一步是教程中的关键命令,24为子网掩码位数,即:255.255.255.0 New-NetNat -Name NAT-VM -InternalIPInterfaceAddressPrefix 192.168.56.0/24 ``` 使用tftpd64配置DHCP服务器,设置开机启动。**不要叉掉tftpd64的窗口,在任务栏图标选择隐藏**。 ## 虚拟机配置 使用官方的Ubuntu Server镜像安装(似乎也可以用ubuntu-minimal),**不要在安装过程中选择安装docker**,因为系统会使用snap安装,后续权限管理会比较麻烦。 修改软件源为https://mirrors.ustc.edu.cn 过程中添加宿主机的代理地址,方便访问外网。 ### 免密码使用sudo ```bash sudo visudo ``` 在%sudo 一栏最后一个ALL前添加NOPASSWD:,最终效果如下 ```bash %sudo ALL=(ALL:ALL) NOPASSWD:ALL ``` ### 加入Zerotier ```bash #安装zerotier curl -s https://install.zerotier.com | sudo bash #加入网络 sudo zerotier-cli join 83048a06326f196c #添加moon中转主机 sudo zerotier-cli orbit db53baa8e6 db53baa8e6 ``` ### 安装docker(这是为了别的东西,也是图方便) ```bash #如果有的话,清除旧的docker sudo apt remove docker docker-engine docker.io containerd runc #安装依赖 sudo apt install \ ca-certificates \ curl \ gnupg \ lsb-release #添加密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg #添加apt软件源 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null #更新软件源 sudo apt update #安装docker sudo apt-get install docker-ce docker-ce-cli containerd.io ``` ### Docker备份、恢复、迁移 在原主机上执行: ```bash #查看docker容器情况 sudo docker ps #创建docker快照 sudo docker commit -p $container_id $image_name #备份到tar文件 sudo docker save -o $location $image_name ``` 执行完后,将生成的tar文件复制到新主机,执行: ```bash #从tar文件恢复 sudo docker load -i $location #检查镜像是否恢复成功 sudo docker images #从镜像生成容器 #这里记录一下某js定时面板的指令,方便使用 sudo docker run -dit \ -v $PWD/ql/config:/ql/config \ -v $PWD/ql/log:/ql/log \ -v $PWD/ql/db:/ql/db \ -v $PWD/ql/repo:/ql/repo \ -v $PWD/ql/raw:/ql/raw \ -v $PWD/ql/scripts:/ql/scripts \ -p 5700:5700 \ --name qinglong \ --hostname qinglong \ --restart unless-stopped \ whyour/qinglong:latest ``` ### docker免sudo执行 ```bash # 创建docker用户组 sudo groupadd docker # 将当前用户添加到docker用户组 sudo usermod -aG docker $USER # 重启docker服务 sudo systemctl restart docker # 切换或者退出当前账户,重新登入 exit ``` ### 安装openjdk-14 使用openjdk14是考虑到openjdk是开源的,代码开放,审计方便且安全,也不涉及商业问题。 ```bash #下载openjdk14安装包 wget https://download.java.net/openjdk/jdk14/ri/openjdk-14+36_linux-x64_bin.tar.gz #解压 tar xvf openjdk-14+36_linux-x64_bin.tar.gz #移动到不那么容易误删的位置 sudo mkdir /usr/local/java sudo mv ./jdk-14 /usr/local/java/jdk14 #设置环境变量 sudo nano /etc/profile.d/jdk.sh #添加以下代码 export JAVA_HOME=/usr/local/java/jdk14 export PATH=$PATH:$JAVA_HOME/bin #更新环境 source /etc/profile.d/jdk.sh ``` ### 安装lnmp ```bash #使用无人值守工具 wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && LNMP_Auto="y" DBSelect="5" DB_Root_Password="t9*ScJ&oJyZ4M@" InstallInnodb="y" PHPSelect="11" SelectMalloc="2" CheckMirror="n" ./install.sh lnmp ``` ## Fisco BCOS国密链部署 采用源码编译方式获得Fisco Bcos二进制文件,再使用官方提供的build_chain.sh搭建一条拥有四个节点的国密区块链 ### 依赖安装 ```bash sudo apt install -y g++ libssl-dev openssl cmake git build-essential autoconf texinfo flex patch bison libgmp-dev zlib1g-dev automake libtool ``` ### 下载代码 ``` git clone https://github.com/FISCO-BCOS/FISCO-BCOS.git -b master-2.0 ``` ### 准备编译 ```bash cd FISCO-BCOS mkdir -p build && cd build cmake .. make #可添加多线程 ``` ### 下载build_chain脚本并使用 ```bash cd ~ && mkdir -p fisco && cd fisco curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.8.0/build_chain.sh && chmod u+x build_chain.sh #使用-e指定刚刚编译完成的二进制fisco-bcos来生成链 #使用-g搭建国密版本链 #使用-G设置`chain.sm_crypto_channel=true`。确认sdk支持的情况下(Java SDK 以及 Web3sdk v2.5.0+),可以指定-G参数,连接也使用国密SSL ./build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G ``` 这样会生成一个全链路国密版本的四个节点文件 ### 启动BCOS链 ```bash bash nodes/127.0.0.1/start_all.sh ``` ## 获取并使用Fisco Bcos控制台 ```bash #获取控制台 cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.8.0/download_console.sh && bash download_console.sh #复制控制台配置文件 cp -n console/conf/config-example.toml console/conf/config.toml #配置控制台证书 cp -r nodes/127.0.0.1/sdk/* console/conf/ #启动 cd ~/fisco/console && bash start.sh ``` ## 部署WeBase套件 ### 安装节点前置服务 因为本机部署了一条四节点的链,而每个节点对应一个前置服务,因此需要在本机运行四个前置服务。 ```bash #拉取代码并进入目录 git clone https://github.com/WeBankBlockchain/WeBASE-Front.git cd WeBASE-Front #编辑build.gradle,注释掉下面这行 #maven { url 'https://dl.bintray.com/ethereum/maven/' } #为保证gradle兼容性,使用gradlew编译 chmod +x ./gradlew && ./gradlew build -x test #拷贝配置 cd dist cp -r conf_template conf #修改配置 cd conf #将节点所在目录下nodes/${ip}/sdk下的所有文件拷贝到当前conf目录 cp -r nodes/${ip}/sdk/* ./conf/ ``` 修改application.yml ```yml spring: datasource: url: jdbc:h2:file:./h2/webasefront;DB_CLOSE_ON_EXIT=FALSE // 默认H2库为webasefront,建议修改数据库存放路径; ... server: port: 5003 // 服务端口 context-path: /WeBASE-Front sdk: ... ip: 127.0.0.1 // 连接节点的监听ip channelPort: 20200 // 连接节点的链上链下端口 certPath: conf // sdk证书的目录,默认为conf logging: config: classpath:log4j2.xml level: com.webank.webase.front: info //建议修改为warn或更高级别,不然会生成海量日志 constant: keyServer: 127.0.0.1:5004 // 密钥服务的IP和端口(WeBASE-Node-Manager服务或者WeBASE-Sign服务,不同服务支持的接口不同),如果作为独立控制台使用可以不配置 aesKey: EfdsW23D23d3df43 // aes加密key(16位) 如启用,各互联的子系统的加密key需保持一致 transMaxWait: 30 // 交易最大等待时间 monitorDisk: / // 要监控的磁盘目录,配置节点所在目录(如:/data) monitorEnabled: true // 是否监控数据,默认true nodePath: /fisco/nodes/127.0.0.1/node0 //配置所连节点的绝对路径,用于监控节点配置与日志 ... ``` 退回到WeBASE-Front,将dist目录复制出另外三个副本,并编辑副本中的application.yml,修改其中的数据库、服务端口和节点信息,分别对应不同的节点。**端口冲突会导致服务无法启动**。 ```bash #启动前置服务 cd dist #启动 bash start.sh #停止 bash stop.sh #检查 bash status.sh ``` 分别进入dist的副本,进行同样的操作。 ```bash #进入控制台 http://{deployIP}:{frontPort}/WeBASE-Front 示例:http://localhost:5002/WeBASE-Front ``` ### 安装签名服务 ```bash #拉取代码 git clone https://github.com/WeBankBlockchain/WeBASE-Sign.git #进入目录 cd WeBASE-Sign #为保证gradle兼容性,使用gradlew编译 chmod +x ./gradlew && ./gradlew build -x test #下面两步也可以在phpmyadmin图形界面上执行,更直观 #登录MySQL: mysql -u ${your_db_account} -p${your_db_password} 例如:mysql -u root -p123456 #新建数据库: CREATE DATABASE IF NOT EXISTS {your_db_name} DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #为保安全性,最好是专门新增一个用户,给予这个数据库的全部权限后,后续全部使用这个用户来操作,而不是直接使用root用户操作 #修改配置 cd dist #复制配置文件 cp conf_template conf -r #修改配置文件 nano conf/application.yml ``` ```yml server: # 本工程服务端口,端口被占用则修改 port: 5004 context-path: /WeBASE-Sign spring: datasource: # 数据库连接信息 url: jdbc:mysql://127.0.0.1:3306/webasesign?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8 # 数据库用户名 username: "dbUsername" # 数据库密码 password: "dbPassword" driver-class-name: com.mysql.cj.jdbc.Driver constant: # aes加密key(16位),如启用,各互联的子系统的加密key需保持一致 aesKey: EfdsW23D23d3df43 ``` ```bash #启动服务 #在dist目录下 启动:bash start.sh 停止:bash stop.sh 检查:bash status.sh ``` ### 安装节点管理服务 ```bash #拉取代码 git clone https://github.com/WeBankBlockchain/WeBASE-Node-Manager.git #进入目录 cd WeBASE-Node-Manager #为保证gradle兼容性,使用gradlew编译 chmod +x ./gradlew && ./gradlew build -x test #新建数据库,这里和上面的顺序类似 ... #修改脚本配置 cd dist/script nano webase.sh #修改服务器名称、用户名和密码 #数据库初始化 bash webase.sh ${dbIP} ${dbPort} 实例:bash webase.sh 127.0.0.1 3306 #回到dist目录,复制配置文件模板到conf cp conf_template conf -r #修改application.yml nano conf/application.yml #修改数据库相关信息以及log level ``` **针对国密,要将`application.yml`中`sdk.encryptType`由`0`改成`1`。** ```bash #在dist目录下: 启动:bash start.sh 停止:bash stop.sh 检查:bash status.sh ``` ### 安装WeBase管理平台 ```bash #拉取代码 git clone https://github.com/WeBankBlockchain/WeBASE-Web.git #进入目录 cd WeBASE-Web #下载solc-bin bash ./get_solc_js.sh #返回上级目录,拉取移动端代码 cd .. git clone https://github.com/WeBankBlockchain/WeBASE-Web-Mobile.git ``` 然后修改nginx.conf,下面是示例: ```yml server { listen 5000 default_server; # 前端端口(端口需要开通策略且不能被占用) server_name 127.0.0.1; # 服务器ip,也可配置为域名 location / { root /data/WeBASE-Web/dist; # 前端文件路径(文件需要有权限访问) # 下面是移动端nginx配置 if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) { root /data/WeBASE-Web-Mobile/dist; } index index.html index.htm; try_files $uri $uri/ /index.html =404; } include /etc/nginx/default.d/*.conf; location /mgr { proxy_pass http://10.0.0.1:5001/; #节点管理服务ip和端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 重启nginx ```bash sudo nginx -s reload ``` 访问`http://{deployIP}:{webPort}`测试 ## 部署WeIdentity 采用可视化部署方式,部署WeIdentity实体身份标识服务 ### 下载部署工具 ```bash wget -c https://gitee.com/WeBank/WeIdentity-Build-Tools/raw/master/common/script/install/weid_install.sh ``` ### 执行安装脚本 ```bash chmod u+x weid_install.sh ./weid_install.sh cd weid-build-tools ``` ### 启动 ```bash ./start.sh ``` 访问`http://{deployIP}:6021`继续进行可视化部署 ### 可视化部署 - 选择“WeID + WeBASE集成模式” - 从WeBase控制台粘贴相关信息 - 选择“联盟链委员会管理员” - 配置区块链节点 - 机构名称 - AMOP 通讯 ID,建议使用英文,并确保该 ID 在联盟链中唯一 - 配置区块链节点 IP 和 Channel 端口 - 配置说明:填入集成 WeIdentity Java SDK 的service(或者部署 WeIdentity Rest Service),所需连接的区块链节点的内网或公网 IP。Channel 端口为该节点的Channel端口。 - 配置要求:格式为区块链节点 IP:Channel 端口。如需使用多个区块链节点, 请用半角逗号”,”分隔。 - 连接单个节点的配置示例:10.10.4.1:20200 - 连接多个节点的配置示例:10.10.4.1:20200,10.10.4.2:20200,127.0.0.1:20200 - 配置SDK证书 - 配置说明:连接区块链节点时需要使用的 SDK 证书。 - 请从您的FISCO-BCOS节点安装目录获取 SDK 证书文件(包括三个文件:ca.crt, node.crt 和 node.key), 可能正在下面两个目录: ~/fisco/nodes/127.0.0.1/sdk/ 或 ~/fisco/generator/tmp_one_click/agencyA/sdk/。 - 选择主群组:应该只有一个默认的群组 - 配置数据库(MySQL) - 创建机构的 WeID:WeBASE同步账户模式 - 部署 WeIdentity 智能合约:设置链ID和用户名 ## FISCO BCOS各种服务占用端口: 记录各种服务原始文档中所占用的端口以及修改位置 | 端口 | 说明 | 修改位置 | | ------ | ------------------------ | ---------------------------------------------------------------------------- | | 80 | Nginx默认监听端口 | `/usr/local/nginx/conf/nginx.conf`<br>`/usr/local/nginx/conf/vhost/*.conf` | | 3306 | MySQL数据库占用端口 | `/etc/my.cnf` | | 5000 | WeBase管理平台前端端口 | `/usr/local/nginx/conf/nginx.conf`<br>`/usr/local/nginx/conf/vhost/*.conf` | | 5001 | WeBase节点管理服务端口 | `WeBASE-Node-Manager/dist/conf/application.yml` | | 5003 | WeBase节点前置服务端口 | `WeBASE-Front/dist/conf/application.yml` | | 5004 | WeBase签名服务端口 | `WeBASE-Sign/dist/conf/application.yml` | © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果你想请我喝可乐,请随意赞赏