在 Linux 系统上部署以太坊节点,从入门到实践

来源:投稿时间:2026-02-22 11:24点击:16

以太坊作为全球领先的智能合约平台,其去中心化特性离不开众多节点的支撑,部署和维护以太坊节点不仅是参与网络、保障网络安全的重要方式,也为开发者提供了测试和部署智能合约的本地环境,本文将详细介绍如何在 Linux 系统上部署以太坊节点,主要涵盖两种主流方式:使用 Geth 客户端执行全节点同步,以及使用更轻量级的 Erigon 客户端。

前期准备

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

  1. 操作系统:推荐使用 Ubuntu 20.04/22.04 LTS 或其他主流 Linux 发行版(如 CentOS, Debian),本文以 Ubuntu 为例进行演示。
  2. 硬件配置
    • CPU:至少 2 核,推荐 4 核及以上。
    • 内存:至少 8GB RAM,推荐 16GB 或以上,尤其是在同步全链数据时。
    • 存储SSD 硬盘是必须的,至少 1TB 可用空间(以太坊主网数据量持续增长,建议预留更大空间,如 2TB 或更多),I/O 性能对同步速度至关重要。
    • 网络:稳定的互联网连接,建议带宽 10Mbps 以上,且最好有公网 IP(便于其他节点连接)。
  3. 权限:需要具有 sudo 权限的用户账户。

部署方式一:使用 Geth 客户端(全节点)

Geth(Go-Ethereum)是以太坊官方实现的 Go 语言客户端,功能全面,是最常用的以太坊节点客户端之一。

  1. 更新系统并安装依赖

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y build-essential unzip git libsnappy-dev
  2. 安装 Go Geth 依赖于 Go 环境,我们可以从 Go 官方网站下载并安装最新版本的 Go。

    # 前往 Go 官网获取最新版本号,这里以 1.21.0 为例
    wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
    sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz

    配置 Go 环境变量:

    echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
    echo 'export GOPATH=$HOME/go' >> ~/.bashrc
    echo 'export GOBIN=$GOPATH/bin' >> ~/.bashrc
    source ~/.bashrc

    验证 Go 安装:

    go version
  3. 下载并编译 Geth

    # 克隆 Geth 仓库
    git clone https://github.com/ethereum/go-ethereum.git
    cd go-ethereum
    # 切换到稳定版本(v1.13.6,可根据需要选择)
    git checkout v1.13.6
    # 编译 Geth
    make geth<
    随机配图
    /pre>

    编译完成后,可执行文件 geth 会在 build/bin 目录下,我们可以将其移动到系统 PATH 中:

    sudo cp build/bin/geth /usr/local/bin/
  4. 初始化 Geth 节点(可选) 如果您想创建一个新的 genesis 区块文件(例如用于私有网络),可以初始化,对于主网,此步骤可跳过,同步时会自动使用主网 genesis。

    # geth --datadir ~/ethereum_data init genesis.json
    # genesis.json 需要您自行准备或编写
  5. 启动 Geth 节点 启动 Geth 节点并开始同步数据,以下是一些常用参数:

    • --datadir:指定数据存储目录。
    • --syncmode:同步模式,可选 full(全同步,默认,下载所有区块和状态)、snap(快速同步,默认,下载状态和最近区块,较快)、light(轻节点)。
    • --http:启用 HTTP-RPC 服务,默认端口 8545。
    • --ws:启用 WebSocket-RPC 服务,默认端口 8546。
    • --authrpc.port:引擎 API 端口,默认 8551,与客户端交互(如 MetaMask)可能需要。
    • --metrics:启用 metrics 监控,默认端口 6060。
    • --maxpeers:最大连接 peer 数量,默认 50。

    示例:启动全节点同步(推荐使用 snap 模式以加快速度)

    geth --datadir ~/ethereum_data --syncmode snap --http --ws --authrpc.port 8551 --metrics --maxpeers 50

    首次启动时,Geth 会开始从其他节点同步区块数据,这个过程可能需要很长时间(几天到几周,取决于您的网络和硬件性能),同步完成后,您的节点就是一个完整的以太坊全节点。

  6. 管理 Geth 进程 为了让节点在后台持续运行,可以使用 nohupsystemd 服务。 使用 nohup:

    nohup geth --datadir ~/ethereum_data --syncmode snap --http --ws --authrpc.port 8551 --metrics --maxpeers 50 > geth.log 2>&1 &

    使用 systemd(推荐): 创建服务文件 sudo nano /etc/systemd/system/geth.service

    [Unit]
    Description=Geth Ethereum Client
    After=network.target
    [Service]
    User=your_username
    Type=simple
    Restart=always
    RestartSec=5
    ExecStart=/usr/local/bin/geth --datadir /home/your_username/ethereum_data --syncmode snap --http --ws --authrpc.port 8551 --metrics --maxpeers 50
    [Install]
    WantedBy=default.target

    your_username 替换为您的用户名,然后启用并启动服务:

    sudo systemctl daemon-reload
    sudo systemctl enable geth
    sudo systemctl start geth
  7. 监控 Geth 状态

    • 查看日志:journalctl -u geth -ftail -f ~/ethereum_data/geth/geth/chaindata/LOG (具体日志路径可能不同)
    • 查看同步状态:geth attach http://localhost:8545 然后在控制台输入 eth.syncing,如果返回 false 表示同步完成。

部署方式二:使用 Erigon 客户端(全节点,另一种选择)

Erigon 是一个用 Go 语言编写的高性能以太坊客户端,它采用不同的架构(Merkle Patricia Trie 的高效处理),在某些情况下同步速度和存储效率可能优于 Geth。

  1. 安装 Erigon Erigon 提供了预编译的二进制文件,安装相对简单。

    # 下载 Erigon 最新版本(请访问其 GitHub Releases 页面获取最新链接)
    wget https://github.com/ledgerwatch/erigon/releases/download/v2.29.0/erigon-linux-amd64-2.29.0.tar.gz
    tar -xzf erigon-linux-amd64-2.29.0.tar.gz
    sudo mv erigon-linux-amd64 /opt/erigon
    sudo ln -s /opt/erigon/erigon /usr/local/bin/erigon
  2. 启动 Erigon 节点 Erigon 的启动命令相对简单:

    erigon --datadir ~/erigon_data

    Erigon 也有自己的同步机制,首次启动也会同步数据,但其 --syncmode 通常为 snapfull,具体取决于版本和配置,它会自动管理数据库和同步过程。

  3. 管理 Erigon 进程 同样可以使用 systemd 来管理 Erigon 服务,创建 /etc/systemd/system/erigon.service

    [Unit]
    Description=Erigon Ethereum Client
    After=network.target
    [Service]
    User=your_username
    Type=simple
    Restart=always
    RestartSec=5
    ExecStart=/usr/local/bin/erigon --datadir /home/your_username/erigon_data
    [Install]
    WantedBy=default.target

    然后启用并启动:

    sudo systemctl daemon-re

标签:

上一篇
下一篇