对于 CentOS 7

投稿 2026-02-23 18:51 点击数: 1

CentOS系统搭建以太坊节点详细教程

以太坊作为全球领先的智能合约平台之一,搭建自己的以太坊节点不仅可以参与网络共识(如成为验证者,取决于以太坊当前共识机制)、进行安全的交易广播和同步,还能为DApp开发提供测试环境,本文将详细介绍如何在CentOS操作系统上搭建一个完整的以太坊节点。

重要提示:

  • 本教程以搭建一个同步全链数据的完整节点为例。
  • 以太坊节点同步和数据存储需要大量的磁盘空间(数百GB到TB级别,取决于网络发展)和稳定的网络连接。
  • 不同版本的以太坊客户端(如Geth, Nethermind, Besu)和以太坊网络(主网、测试网)命令和配置略有差异,本文以常用的 Geth 客户端以太坊主网 为例进行讲解。
  • 请确保您的CentOS系统版本较新且为64位系统,建议使用CentOS 7或CentOS Stream/8。

第一部分:环境准备

在开始之前,请确保您的CentOS系统满足以下基本要求:

  1. 操作系统:CentOS 7 / CentOS 8 / CentOS Stream 9 (64位)
  2. 硬件要求
    • CPU:至少2核心,推荐4核心或以上。
    • 内存:至少8GB RAM,推荐16GB或以上,尤其是对于全节点和未来可能的验证者角色。
    • 硬盘:至少1TB可用空间(SSD强烈推荐,可大幅提升同步速度),建议使用SSD并预留足够扩展空间。
    • 网络:稳定的互联网连接,建议带宽10Mbps以上,上传速度对网络同步也很重要。
  3. 用户权限:建议使用具有sudo权限的非root用户进行操作。

第二部分:安装步骤

更新系统

更新您的系统软件包到最新版本:

# 对于 CentOS 8 / Stream
sudo dnf update -y

安装必要依赖

安装编译和运行Geth所需的依赖工具:

sudo yum install wget git curl -y
# 对于 CentOS 8 / Stream
sudo dnf groupinstall "Development Tools" -y
sudo dnf install wget git curl -y

安装Go语言环境

Geth是用Go语言编写的,需要先安装Go,建议从Go官网下载最新稳定版。

# 1. 访问 Go 官网获取最新版本号 (1.21.0)
# 这里以 1.21.0 为例,请替换为实际最新版本
GO_VERSION=1.21.0
# 2. 下载 Go 二进制包
wget https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
# 3. 解压到 /usr/local
sudo tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz
# 4. 配置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >&
随机配图
gt; ~/.bashrc echo 'export GOPATH=$HOME/go' >> ~/.bashrc echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc # 5. 使环境变量生效 source ~/.bashrc # 6. 验证Go安装 go version # 应该显示类似 go version go1.21.0 linux/amd64 的输出

下载并编译Geth

  1. 克隆Geth源码仓库

    git clone https://github.com/ethereum/go-ethereum.git
    cd go-ethereum
  2. 编译Geth

    # 确保在 go-ethereum 目录下
    make geth

    编译过程可能需要一些时间,具体取决于您的CPU性能。

  3. 验证Geth安装

    ./build/bin/geth version

    如果看到版本信息,说明编译成功。

  4. (可选)将Geth添加到系统PATH方便全局使用:

    # 创建一个目录用于存放可执行文件
    mkdir -p ~/bin
    # 复制geth到个人bin目录
    cp ./build/bin/geth ~/bin/
    # 将~/bin添加到PATH(如果之前没添加过GOPATH相关PATH)
    echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
    source ~/.bashrc
    # 验证
    which geth
    geth version

启动并同步以太坊节点

您可以启动Geth节点了。

  1. 创建数据目录(用于存放区块链数据):

    mkdir -p ~/ethereum_data
  2. 启动Geth节点

    基本同步启动(同步所有区块和状态数据)

    geth --datadir ~/ethereum_data --syncmode full --http --http.addr 0.0.0.0 --http.port 8545 --http.vhosts "*"
    • --datadir ~/ethereum_data:指定数据存储目录。
    • --syncmode full:设置为完整同步模式,下载并验证所有区块和状态数据,这是最安全的模式,但同步时间最长。
    • --http:启用HTTP-RPC服务,方便与其他应用交互(如MetaMask、Truffle等)。
    • --http.addr 0.0.0.0:允许任何IP地址访问HTTP-RPC服务(生产环境请谨慎设置,建议使用防火墙限制或绑定到特定IP)。
    • --http.port 8545:设置HTTP-RPC服务端口,默认为8545。
    • --http.vhosts "*":允许所有主机名的HTTP请求。

    其他常用启动参数

    • --cache 8192:设置缓存大小(MB),可根据内存调整,默认为4096,较大缓存可提高同步速度,但占用更多内存。
    • --rpc.allow-unprotected-tx:允许发送未经签名的交易(主要用于测试)。
    • --ws:启用WebSocket-RPC服务,--ws.addr 0.0.0.0 --ws.port 8546 --ws.origins "*"

    后台运行: 如果您希望节点在后台运行,可以使用nohupsystemd。 使用nohup

    nohup geth --datadir ~/ethereum_data --syncmode full --http --http.addr 0.0.0.0 --http.port 8545 --http.vhosts "*" > ~/ethereum_node.log 2>&1 &

    这将在后台启动节点,并将日志输出到~/ethereum_node.log文件。

  3. 监控同步进度

    • 在Geth运行的控制台(前台运行时)或通过连接到节点的客户端中,可以输入:
      eth.syncing

      如果返回false,表示已经同步完成,如果返回一个包含currentBlock, highestBlock等信息的对象,表示正在同步中。

    • 查看日志文件:
      tail -f ~/ethereum_node.log
    • 使用第三方区块浏览器查看网络同步情况(如Etherscan的Syncing Status页面)。

    注意:以太坊主网同步可能需要数天甚至数周时间,具体取决于您的硬件性能和网络状况,使用SSD可以显著缩短同步时间。


第三部分:常用操作与维护

进入Geth控制台

当节点运行后,您可以进入Geth JavaScript Console与之交互:

geth attach ~/ethereum_data/geth.ipc

在控制台中,您可以查看账户、余额、发送交易、调用合约等。

  • eth.blockNumber:查看当前最新区块号。
  • eth.accounts:查看节点管理的账户(如果没有创建则为空)。
  • personal.newAccount("your_password"):创建新账户。

停止节点

如果前台运行,直接按Ctrl+C,如果后台运行,可以查找进程ID并终止:

# 查找geth进程
ps aux | grep geth
# 终止进程(替换为实际的PID)
kill -9 <PID>

定期维护

  • 备份数据~/ethereum_data目录是您的区块链数据核心,请定期备份此目录,以防数据丢失。
  • 监控磁盘空间:区块链数据会不断增长,请确保有足够的磁盘空间。
  • 更新Geth:以太坊社区持续