- ETH节点-服务器部署
- 1.服务器配置及基础软件下载
- 1.1 服务器配置
- 1.1.1 最低配置
- 1.1.2 中等配置
- 1.1.3 高级配置
- 1.2 基础软件下载
- 1.3 数据盘格式化并且挂载
- 2.安装相关工具软件
- 2.1 配置安装Go语言运行环境
- 2.2 安装geth
- 2.3 配置geth环境变量
- 3.启动节点
- 3.1 启动命令及参数
- 3.2 同步模式
- 3.2.1 Fast同步模式
- 3.2.2 Full同步模式
- 3.2.3 Light同步模式
- 4.Geth客户端登录操作
- 5.Nginx反向代理=访问节点地址
- 5.1 Nginx配置文件
- 6.进程管理启动(supervisord)
- 7.AWS-Geth节点启动命令
强烈建议使用AWS(亚马逊云的EC2服务器)
1.1.1 最低配置CPU:4核 内存:8GB 磁盘: 系统盘:100GB 数据盘:2048GB 网络:5M+ AWS服务器名称:c5.xlarge1.1.2 中等配置
CPU:8核 内存:16GB 磁盘: 系统盘:100GB 数据盘:2048GB 网络:8M+ AWS服务器名称:c5.2xlarge1.1.3 高级配置
CPU:16核 内存:32GB 磁盘: 系统盘:100GB 数据盘:2048GB 网络:25M+ AWS服务器名称:c5.4xlarge1.2 基础软件下载
#CentOS下载基础软件 yum update -y && yum -y install epel-release && yum install -y vim wget tree lrasz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools istop httpd-tools unzip git supervisor htop lrzsz #Ubuntu下载基础软件 apt update && apt upgrade && apt -y install vim wget tree lrasz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools istop httpd-tools unzip git htop lrzsz1.3 数据盘格式化并且挂载
#ETH数据盘格式化并且挂载 #格式化硬盘 mkfs.xfs -f /dev/nvme1n1 #2T硬盘进行格式化 #查看是否存在UUID lsblk -a lsblk -f #挂载磁盘到数据目录 mount /dev/nvme1n1 /eth df -h2.安装相关工具软件 2.1 配置安装Go语言运行环境
###下载安装Golang #下载 wget https://dl.google.com/go/go1.18.1.linux-amd64.tar.gz sudo tar -zxvf go1.18.1.linux-amd64.tar.gz -C /usr/local #设置环境变量 sudo vim /etc/profile export GOROOT=/usr/local/go export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin export GO111MODULE=on export GOPROXY=https://goproxy.cn,direct #生效 source /etc/profile2.2 安装geth
项目访问地址:https://github.com/ethereum/go-ethereum
#进入服务存放目录 cd /opt/eth/ #下载访问 wget https://github.com/ethereum/go-ethereum/archive/refs/tags/v1.10.17.tar.gz #解压 tar xf v1.10.17.tar.gz #复制到/usr/local cp go-ethereum-1.10.17/ /usr/local/go-ethereum -R
#进入服务目录 cd /usr/local/go-ethereum #编译 make all
编译完成之后在build/bin目录下会生成很多可执行文件,geth就是其中一个
2.3 配置geth环境变量#配置geth环境变量 vim /etc/environment GOROOT=/usr/local/go PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin:/usr/local/go-ethereum/build/bin" #生效 source /etc/environment
终端输入 geth version命令就会返回如下输出
3.启动节点 3.1 启动命令及参数nohup geth --syncmode "full" --mainnet --datadir /eth/eth-01 --port 29803 --http --http.api "eth,net,web3,txpool" --http.addr 0.0.0.0 --http.port 33224 --maxpeers 500 & > nohup.out
geth命令详细用法—以太坊客户端Geth命令及参数详解
| 参数名称 | 参数说明 |
|---|---|
| –syncmode | 同步模式,有三种"fast",“full”,“light”. |
| –mainnet | 以太坊–主网 |
| –datadir | 钱包以及区块数据等存储目录,这个建议单独使用数据盘,不要指定系统盘的文件夹 |
| –http | 启用HTTP-RPC服务器 |
| –http.api | 通过HTTP-RPC接口提供API服务 |
| –http.addr | HTTP-RPC服务器监听接口,本地(127.0.0.1),远程(0.0.0.0) |
| –http.port | HTTP-RPC服务器监听端口,默认(8545) |
#Fast同步模式 启动快速区块同步模式,在同步到最新区块后,转化为正常区块同步模式. 这个是推荐选项,此方法可能会对历史数据有部分丢失,但是不影响今后的使用.3.2.2 Full同步模式
#Full同步模式 从开始到结束,获取区块的header,获取区块的body,从创始块开始校验每一个元素,需要下载所有区块数据信息. 速度最慢,但是能获取到所有的历史数据,这个是默认的选项.3.2.3 Light同步模式
#Light同步模式 仅获取当前状态. 验证元素需要向full节点发起相应的请求.4.Geth客户端登录操作
以太坊区块浏览器查看最新区块:https://etherscan.io
#本机登录 geth attach /eth/eth-01/geth.ipc
#查看状态 eth
#查看最新区块高度 eth.blockNumber
#查看同步状态,返回false未同步或者是同步到最新区块 eth.syncing
#查看自己的这个节点连了多少个其它节点进行数据同步 net.peerCount5.Nginx反向代理=访问节点地址 5.1 Nginx配置文件
vim eth-data-01.xxx.com
server{
listen 80;
server_name eth-data-01.xxx.com;
return 301 https://eth-data-01.xxx.com$request_uri;
}
server {
listen 443 ssl http2;
server_name eth-data-01.xxx.com;
ssl_certificate /etc/nginx/conf.d/ssl/ssl.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/ssl.key;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://172.13.18.104:33224/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_redirect http:// https://;
proxy_buffering off;
}
}
6.进程管理启动(supervisord)
vim geth.ini [program:geth] command=/usr/local/go-ethereum/build/bin/geth --syncmode "full" --mainnet --datadir /eth/eth-01 --port 29803 --http --http.api "eth,net,web3,txpool" --http.addr 0.0.0.0 --http.port 33224 --maxpeers 500 directory=/usr/local/go-ethereum/build/bin user=geth autostart=true autorestart=true stdout_logfile=/var/geth/geth-out.log stderr_logfile=/var/geth/geth-err.log7.AWS-Geth节点启动命令
nohup geth --syncmode "full" --mainnet --datadir /eth/eth-01 --port 29803 --http --http.api "eth,net,web3,txpool" --http.addr 0.0.0.0 --http.port 33224 --maxpeers 500 & > nohup.out



