在 Linux 系统上部署以太坊节点,从入门到实践
来源:投稿时间:2026-02-22 11:24点击:28
以太坊作为全球领先的智能合约平台,其去中心化特性离不开众多节点的支撑,部署和维护以太坊节点不仅是参与网络、保障网络安全的重要方式,也为开发者提供了测试和部署智能合约的本地环境,本文将详细介绍如何在 Linux 系统上部署以太坊节点,主要涵盖两种主流方式:使用 Geth 客户端执行全节点同步,以及使用更轻量级的 Erigon 客户端。
前期准备
在开始部署之前,请确保您的 Linux 系统满足以下基本要求:
- 操作系统:推荐使用 Ubuntu 20.04/22.04 LTS 或其他主流 Linux 发行版(如 CentOS, Debian),本文以 Ubuntu 为例进行演示。
- 硬件配置:
- CPU:至少 2 核,推荐 4 核及以上。
- 内存:至少 8GB RAM,推荐 16GB 或以上,尤其是在同步全链数据时。
- 存储:SSD 硬盘是必须的,至少 1TB 可用空间(以太坊主网数据量持续增长,建议预留更大空间,如 2TB 或更多),I/O 性能对同步速度至关重要。
- 网络:稳定的互联网连接,建议带宽 10Mbps 以上,且最好有公网 IP(便于其他节点连接)。
- 权限:需要具有 sudo 权限的用户账户。
部署方式一:使用 Geth 客户端(全节点)
Geth(Go-Ethereum)是以太坊官方实现的 Go 语言客户端,功能全面,是最常用的以太坊节点客户端之一。
-
更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential unzip git libsnappy-dev
-
安装 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
-
下载并编译 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
编译完成后,可执行文件 geth 会在 build/bin 目录下,我们可以将其移动到系统 PATH 中:
sudo cp build/bin/geth /usr/local/bin/
-
初始化 Geth 节点(可选)
如果您想创建一个新的 genesis 区块文件(例如用于私有网络),可以初始化,对于主网,此步骤可跳过,同步时会自动使用主网 genesis。
# geth --datadir ~/ethereum_data init genesis.json
# genesis.json 需要您自行准备或编写

i>
启动 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 会开始从其他节点同步区块数据,这个过程可能需要很长时间(几天到几周,取决于您的网络和硬件性能),同步完成后,您的节点就是一个完整的以太坊全节点。
管理 Geth 进程
为了让节点在后台持续运行,可以使用 nohup 或 systemd 服务。
使用 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
监控 Geth 状态
- 查看日志:
journalctl -u geth -f 或 tail -f ~/ethereum_data/geth/geth/chaindata/LOG (具体日志路径可能不同)
- 查看同步状态:
geth attach http://localhost:8545 然后在控制台输入 eth.syncing,如果返回 false 表示同步完成。
部署方式二:使用 Erigon 客户端(全节点,另一种选择)
Erigon 是一个用 Go 语言编写的高性能以太坊客户端,它采用不同的架构(Merkle Patricia Trie 的高效处理),在某些情况下同步速度和存储效率可能优于 Geth。
-
安装 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
-
启动 Erigon 节点
Erigon 的启动命令相对简单:
erigon --datadir ~/erigon_data
Erigon 也有自己的同步机制,首次启动也会同步数据,但其 --syncmode 通常为 snap 或 full,具体取决于版本和配置,它会自动管理数据库和同步过程。
-
管理 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
声明:遵守法律,请勿非法饲养或买卖野生动物与保护动物!本文由用户投稿上传,若侵权请提供版权资料并联系删除!
标签: