1. 部署安装指南
1.1 前提和要求
系统要求:Centos7、ctyunOS2.3及以上 软件要求:JDK8、Mysql/teledb、Redis/ctgche。
1.2 部署底链
硬件要求 硬件要求至少满足以下配置: 推荐配置:CPU 8 核,内存 32G,带宽 20M, SSD 磁盘500G 最低配置:CPU 4 核,内存 16G,带宽 10M, SSD 磁盘500G 软件要求 系统软件为Centos7
1.2.1 获取并解压安装包tar -zxvf
1.2.2 进入scripts脚本修改启动路径
vim /software/ccsnode/ccschain1/scripts/ccschain
1.2.3 生成命令
生成一个新的公私钥对,可执行的命如下(其中,address 和 private_key_aes 分别对应 validation_address和validation_private_key):如不是root账户,进入bin目录下后执行执行chmod +x ccschain,执行后方可生成公私钥对; 示例如下: [root@bumo ~]# cd /software/ccsnode/ccschain1/bin [admin@XXAQPT3VM925019 bin]$ chmod +x ccschain [root@bumo bin]#./ccschain --create-account 如部署4个节点,需执行4次并将生成的公私钥对保存用于填写配置文件
| { "address" : "buQmtDED9nFcCfRkwAF4TVhg6SL1FupDNhZY", //地址 "private_key" : "privbsZozNs3q9aixZWEUzL9ft8AYph5DixN1sQccYvLs2zPsPhPK1Pt", //私钥 "private_key_aes" : "e174929ecec818c0861aeb168ebb800f6317dae1d439ec85ac0ce4ccdb88487487c3b74a316ee777a3a7a77e5b12efd724cd789b3b57b063b5db0215fc8f3e89", //AES 加密的私钥 "public_key" : "b00108d329d5ff69a70177a60bf1b68972576b35a22d99d0b9a61541ab568521db5ee817fea6", //公钥 "public_key_raw" : "08d329d5ff69a70177a60bf1b68972576b35a22d99d0b9a61541ab568521db5e", //原始公钥 "sign_type" : "ed25519" //ed25519 加密方式 } | | --- |
实际生成的公私钥对如下:
1.2.4 选择主网的配置文件
输入以下命令进入到配置文件目录。
cd /software/ccsnode/ccschain1/config
配置
通过修改ccschain1的config目录下的ccschain.json文件进行配置。这里主要配置 ledger 下的 validation_address 和 validation_private_key 。这两项是记账节点的账户地址和加密后的私钥,如果是同步节点,这两项没有作用,但是如果同步节点申请成为记账节点后,可用于参与共识。
| { "db": { "account_path": "data/account.db",//配置log日志 "ledger_path": "data/ledger.db", "keyvalue_path": "data/keyvalue.db" }, "p2p": { "network_id": 30002, "consensus_network": { "heartbeat_interval": 60, "listen_port": 46001, "target_peer_connection": 50, "max_connection": 20000, "connect_timeout": 5, "known_peers": [“127.0.0.1:46001","127.0.0.1:46001","127.0.0.1:46001","127.0.0.1:46001"]//配置初始共识节点ip信息 }, "ssl_enable": false,//配置证书信息 "ssl":{ "chain_file":"config/node_ccs.crt", "private_key_file":"config/node_ccs.pem", "private_password":"1234567", "dhparam_file":"config/dh2048.pem", "verify_file":"config/ca.crt" }, "node_private_key":"privbyBUqaERo3M5bufgChtAUaPvpPwuG6CQRE2M2mAQptw3G7tPcTpS" }, "webserver": {//配置api端口信息 "listen_addresses": "0.0.0.0:36001", "index_name": "", "directory": "web/", "ssl_enable": false, "query_limit": 1000, "multiquery_limit": 100, "thread_count": 8 }, "wsserver": { "listen_address": "0.0.0.0:56001", "allow_orgin" : "" }, "ledger": { "close_interval":10, "db_tx_check":true, "nonce_check":true, "sign_check":true, "timeout_check":true, "validation_type":"pbft",//配置共识节点信息 "validation_address": "ccs3CwmtxaudFVcxCE7BaUZrsRMQSCRbE2eT", "validation_private_key": "privbyBUqaERo3M5bufgChtAUaPvpPwuG6CQRE2M2mAQptw3G7tPcTpS", "max_trans_per_ledger": 10000, "hardfork_points": [], "tx_pool":{ "queue_limit": 10240, "queue_per_account_txs_limit": 10240 } }, "genesis": {//配置创世块信息 "chain_id": 0, "account": "ccs3HkoYgAL8BN2voHP1LpAy1dy36xq87i35", //不要动 "slogan" : "a new era of value", "fees": { "base_reserve": 0, "gas_price": 0 }, "validators": ["ccs3CwmtxaudFVcxCE7BaUZrsRMQSCRbE2eT","ccs3DyieVRXvtUu9w7TaYdMquWTJEEvd6VBb","ccs3E3R9bBDX6wjCuGaETxDYV1qF83uAD7c2","ccs3GF1ihyCQRQarUBqJx6MPpstnbcBeKNRQ"] }, "logger": { "path": "log/ccschain.log", "dest": "FILE|STDOUT|STDERR", "level": "ALL", "time_capacity": 1, "size_capacity": 10, "expire_days": 10 } } | | --- |
注意:validation_address 和 validation_private_key 可以通过 bumo 程序命令行工具获得,请妥善保存该账号信息,一旦丢失将无法找回。
实际部署情况如下:
1.2.5 启动通服链
进入脚本目录 必须要root权限
cd /software/ccsnode/ccschain1/scripts
1.2.6 用脚本启动通服链
进入到根目录下的scripts 启动通服链(必须要root权限,并给文件夹赋予权限)
./ccschain start
查看启动状态
1.2.7 停止通服链
./ccschain stop
1.2.8 查看出块是否成功
部署完成后,查看区块高度是否正常增加。一般区块高度只要是大于1,就表示节点运行正常。 调用如下命令(例如,IP是127.0.0.1,端口是36002): curl 127.0.0.1:16002/getLedger **注意:**这里的IP和端口需要换成你配置的监控的IP和端口。 显示结果如下:
| { "error_code" : 0, "result" : { "header" : { "account_tree_hash" : "bf337b72bb5ab150f25a4e665259049cd94fa70966a1c0f56f79a44969980ccb", "close_time" : 1558595960522453, "consensus_value_hash" : "04c172793d72b14ce2da8c5a9f9b7366edf75bc3c81aaf9f3069e6af3af1c857", "fees_hash" : "916daa78d264b3e2d9cff8aac84c943a834f49a62b7354d4fa228dab65515313", "hash" : "7349292089a68b134c03aefceed8a3ce0bf69960a21a6ca41467a672d3e2c3ce", "previous_hash" : "5d86cc2bb4a97831c4f8bbb1bbb8a09289337c42c33fa64bc7c1aa352b17b2ba", "seq" : 3, "validators_hash" : "9ff25c4231deb81c44eec379fd2467156d2389c5d69edf308d38f7b5ac53705b", "version" : 1002 } } } | | --- |
注意:这里的seq就是区块高度,这里是3,表示节点运行正常。
1.2.9 其他命令
输入以下命令清空数据库。 cd /usr/local/ccschain1/bin ./ccschain –dropdb
1.3 运行环境安装部署
软件要求:JDK8、Mysql5.7、Redis6.2.6具体部署操作如下所示:
1.3.1 MySQL5.7离线部署
1.3.1.1 前置准备
检查是否已经安装过mysql,执行命令 rpm -qa | grep mysql 如有,执行删除命令 rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64 查询所有Mysql对应的文件夹 whereis mysql find / -name mysql 删除相关目录或文件 rm -rf /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /etc/rc.d/init.d/mysql /etc/selinux/targeted/active/modules/100/mysql /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql
1.3.1.2 安装mysql
2.1:检查mysql用户组和用户是否存在,如果没有,则创建(此处使用mysql,也可使用其他任意用户名) cat /etc/group | grep mysql cat /etc/passwd |grep mysql groupadd mysql useradd -r -g mysql mysql 2.2:执行解压命令: tar -zxvf ./mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.3:移动该文件到/usr/local/下,并将文件夹名称修改为mysql mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql 2.4:在/usr/local/mysql目录下创建data目录 mkdir /usr/local/mysql/data 2.5:更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限 chown -R mysql:mysql /usr/local/mysql #此处的mysql为我们上面创建的用户 chmod -R 755 /usr/local/mysql 2.6: 替换/etc/my.cnf文件 编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码root@localhost: dtiCcJebK8_f ==M*N)ijAP.7cp /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql 2.7:测试启动mysql服务器(使用my.cnf中配置的user或者root执行此命令启动) /usr/local/mysql/support-files/mysql.server start
1.3.1.3 完善,增加软连接并增加开机启动
添加软连接,并重启mysql服务 ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql service mysql restart 登录mysql,修改密码(密码为初始化生成的临时密码) mysql -u root -p set password for root@localhost = password('20220507qE!!!Qe'); 开放远程连接 use mysql; update user set user.Host='%' where user.User='root'; flush privileges; quit 设置开机自动启动 将服务文件拷贝到init.d下,并重命名为mysql cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 赋予可执行权限 chmod +x /etc/init.d/mysqld 添加服务 chkconfig --add mysqld 显示服务列表 chkconfig --list
- 查看mysql启动状态:service mysql status或者/usr/local/mysql/support-files/mysql.server status
- 启动mysql:service mysql start或者/usr/local/mysql/support-files/mysql.server start
- 停止mysql:service mysql stop或者/usr/local/mysql/support-files/mysql.server stop
1.3.1.4 离线安装缺失库:libaio.so.1
sudo yum install libaio 或下载离线安装包 sudo rpm -ivh /path/to/libaio-*.rpm 在某些情况下,特别是当使用自定义安装或第三方软件安装包时,可能需要配置 LD_LIBRARY_PATH 环境变量来指定库文件的位置: export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH
1.3.2 MySQL8.0-Docker部署
1.3.2.1 先行下载docker离线安装包:docker-18.06.3-ce.tgz
sudo dpkg -i *.deb
1.3.2.2 下载 MySQL 镜像
docker pull mysql:5.7
1.3.2.3 保存镜像到一个 tar 文件
docker save -o mysql-5.7.tar mysql:5.7
1.3.2.4 加载镜像到 Docker
docker load < /path/to/mysql.tar
1.3.2.5 持久化运行MySQL容器
因为机器重启会导致数据丢失,需要把数据、配置文件外挂到宿主机上。 docker run --name my-mysql -v /path/to/my-custom.cnf:/etc/mysql/conf.d/config-file.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql-data:/var/lib/mysql -p 3306:3306 mysql:5.7 docker cp /path/to/my-custom.cnf 容器名:/etc/mysql/conf.d/config-file.cnf 设置在宿主机重启时自动启动: docker update --restart=always my-mysql
1.3.2.5 验证MySQL容器
**docker ps ** 重启容器:docker restart my-mysql 停止容器:docker stop my-mysql 启动已停止的容器:docker start my-mysql 使用 docker rm 命令删除已停止的容器:docker rm <container_name_or_id>
**1.3.2.6 **进入MySQL容器的bash环境进行管理:
docker exec -it my-mysql bash 在容器内操作MySQL: mysql -uroot -p
**1.3.2.6 **将数据库文件导入容器
从宿主机将SQL文件复制到正在运行的MySQL Docker容器中: docker cp /path/to/yourfile.sql 容器名或ID:/yourfile.sql 导入SQL文件到MySQL数据库: docker exec -i 容器名或ID mysql -u用户名 -p密码 数据库名 < /path/to/yourfile.sql 使用 CREATE DATABASE 命令创建一个新数据库: CREATE DATABASE databasename; USE mydb;
1.3.3 redis离线安装部署
1.3.3.1 上传redis离线安装包:redis.tar.gz
tar -zxvf redis.tar.gz
**1.3.3.2 **添加开机启动服务
vi /etc/systemd/system/redis.service [Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/usr/local/java/redis/redis-server /usr/local/java/redis/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
**1.3.3.3 **修改 redis.conf 文件,
vi redis.conf daemonize no 改为 demonize yes 即可后台启动 protected-mode配置,默认是yes,即外部网络不可连接。如外部网络连接redis服务。要设置no bind:指定IP,只能是指定IP访问,如要所有外网访问,要注释掉 requirepass:设置密码
**1.3.3.4 **后台启动
./redis-server redis.conf
**1.3.3.5 **设置开机启动
[root@localhost bin]# systemctl daemon-reload [root@localhost bin]# systemctl start redis.service [root@localhost bin]# systemctl enable redis.service
**1.3.3.6 **服务操作命令
systemctl start redis.service #启动redis服务 systemctl stop redis.service #停止redis服务 systemctl restart redis.service #重新启动服务 systemctl status redis.service #查看服务当前状态 systemctl enable redis.service #设置开机自启动 systemctl disable redis.service #停止开机自启动
1.3.4 docker-redis离线安装部署
1.3.4.1 加载镜像到 Docker
docker load < /path/to/mysql.tar
1.3.4..2 持久化运行MySQL容器
因为机器重启会导致数据丢失,需要把数据、配置文件外挂到宿主机上。 docker run --name my-redis-container -v /your/local/path/redis.conf:/usr/local/etc/redis/redis.conf -v /your/local/path/data:/data redis redis-server /usr/local/etc/redis/redis.conf redis:6.2 设置在宿主机重启时自动启动: docker update --restart=always mysql-redis
1.3.4.3 验证MySQL容器
**docker ps ** 重启容器:docker restart my-redis 停止容器:docker stop my-redis 启动已停止的容器:docker start my-redis 使用 docker rm 命令删除已停止的容器:docker rm <container_name_or_id>
**1.3.4.4 **进入MySQL容器的bash环境进行管理:
docker exec -it my-redis bash
1.3.5 jdk离线安装部署
在 Linux 系统上离线安装 JDK(Java Development Kit)需要通过在有互联网连接的机器上下载 JDK 的安装包,然后将安装包复制到目标机器上进行安装的方法来完成。
1.3.5.1 在有互联网连接的机器上下载 JDK 安装包:
访问 JDK 提供商的官方网站,比如 Oracle(http://www.oracle.com/technetwork/java/javase/downloads/index.html)或者 OpenJDK(http://jdk.java.net/),选择适合你的 Linux 发行版的 JDK 版本并下载。这通常是一个 .tar.gz
(压缩包)或 .rpm
/ .deb
(针对 Red Hat/Fedora 系列或 Debian/Ubuntu 系列的软件包管理器格式)。
1.3.5.2. 将下载的安装包复制到离线的 Linux 机器上。
1.3.5.3. 在离线的 Linux 机器上安装 JDK:
- 解压缩 JDK 的压缩包。 tar -zxvf jdk-8u231-linux-x64.tar.gz
- 将解压后的 JDK 目录移动到合适的位置,如
/usr/local/
。 sudo mv jdk1.8.0_231 /usr/local/ - 更新环境变量,设置
JAVA_HOME
并且将 JDK 的bin
目录添加到你的PATH
环境变量中。你可以将以下命令添加到~/.bashrc
或~/.profile
文件中,然后执行source ~/.bashrc
或source ~/.profile
以使设置生效。 export JAVA_HOME=/usr/local/jdk1.8.0_231 export PATH=JAVA_HOME/bin:PATH
1.3.5.4. 验证安装:
当你完成 JDK 安装后,可以通过以下命令来检查 Java 是否安装正确: java -version
1.4 浏览器服务器安装部署
步骤: 一、配置文件修改 二、启动浏览器项目
1.4.1.1 获取浏览器项目文件jar包并放置在/software目录下
1.4.1.2 解压tar -zxvf ccs-browser2.0.tar
1.4.1.3进入文件夹 cd /software/ccs-browser2.0
1.4.1.4 启动浏览器项目
1.5 Baas管理平台部署
软件要求:JDK8、Mysql、Redis、邮件及短信服务 步骤: 一、启动mysql并导入表结构 二、启动Redis 三、配置文件修改 四、启动Baas管理平台
1.5.1启动mysql并导入表结构
1.5.1.1 获取浏览器项目文件jar包并放置在/software目录下
1.5.1.2 解压tar -zxvf ccs-browser2.0.tar
1.5.1.3 进入mysql数据库,查看数据库情况
1.5.1.4 导入表结构
1.5.2 配置文件修改
1.5.2.1 进入文件夹 cd /software/ccs-manager
1.5.3.2 修改配置内容vi application.yml
配置url,username,password信息
配置redis,host,port,password等信息
配置邮件服务信息
配置服务器信息
配置短信服务信息
配置滑块服务配置
配置链配置项,只需要配置合约地址:
通知配置项
配置底链信息
配置跨域白名单
1.5.3 启动Baas管理平台项目
脚本化启动:./server.sh start 命令行启动:java -jar ccs-manager-2.3.0.jar 命令行制定脚本:nohup java -jar ccs-manager-2.3.0.jar --spring.profiles.active=dx
1.6 前端部署
软件要求:nginx 步骤: 一、 配置nginx 二、 解压web 三、 启动nginx 四、 启动官网服务
1.6.1 配置nginx
进入nginx配置文件目录
1.6.2 修改配置文件 site_conf下
1.6.2.1 浏览器配置文件ccs-browser.conf
1.6.2.1 baas配置文件ccs-manager-web.conf
1.6.3 解压web
tar -zxvf nginx.tar.gz
1.6.4 进入nginx安装目录并启动
cd /nginx/sbin/nginx ./nginx
1.6.5 设置开启自启
在 /usr/lib/systemd/system 目录中添加 nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP MAINPID
ExecStop=/bin/kill -s QUIT MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
查看Nginx的服务状态
systemctl status nginx
设置开机自动启动
可以使用 systemctl 启动,说明之前添加的 nginx.service 没有问题。然后输入 systemctl enable nginx 设置开机启动
重启检查下是否设置成功