以太坊作为全球领先的智能合约平台,其客户端软件是与以太坊网络交互的核心工具,在CentOS 7系统上安装以太坊客户端(以最常用的Geth为例)是许多开发者和节点运营者的第一步,本文将详细介绍如何在CentOS 7系统上下载、安装、配置并初步运行Geth以太坊客户端。
准备工作
在开始安装之前,请确保您的CentOS 7系统满足以下基本条件:
cat /etc/redhat-release 命令查看。sudo yum update -y
安装依赖项

在编译和运行Geth之前,需要安装一些必要的依赖库和工具:
sudo yum groupinstall "Development Tools" -y sudo yum install wget git gcc-c make -y
上述命令会安装基本的编译工具链、wget(用于下载)、git(用于版本控制,如果从源码编译则需要)以及gcc-c 和make。
安装Geth以太坊客户端
Geth的安装主要有两种方式:使用预编译的二进制文件或从源码编译,对于大多数用户,推荐使用预编译的二进制文件,因为它更简单快捷。
使用预编译二进制文件安装(推荐)
访问Geth官方发布页面: Geth的官方发布页面在GitHub上:https://github.com/ethereum/go-ethereum/releases 您可以在该页面找到最新版本以及各个历史版本的下载链接。
下载Geth二进制文件: 以最新稳定版(假设最新版本为 v1.13.6,请根据实际情况替换)为例,执行以下命令下载:
# 请访问上述链接确认最新版本号,替换下面的 v1.13.6 wget https://github.com/ethereum/go-ethereum/releases/download/v1.13.6/geth-linux-amd64-v1.13.6-063bf17c.tar.gz
如果您不确定版本号,也可以使用 curl 配合GitHub API获取最新版本号(此处略,直接访问页面更直观)。
解压文件: 下载完成后,解压压缩包:
tar -xzf geth-linux-amd64-v1.13.6-063bf17c.tar.gz
解压后,您会得到一个名为 geth-linux-amd64-v1.13.6-063bf17c 的目录。
移动Geth到系统PATH: 为了方便在任何目录下执行geth命令,将其移动到 /usr/local/bin 目录:
sudo mv geth-linux-amd64-v1.13.6-063bf17c/geth /usr/local/bin/
如果解压后的目录名不同,请根据实际情况调整。

验证安装: 执行以下命令验证Geth是否安装成功:
geth version
如果显示Geth的版本信息,则表示安装成功。
从源码编译安装(可选,适合需要定制最新功能或修复的用户)
安装Go语言环境: Geth是用Go语言编写的,因此需要先安装Go,这里以安装Go 1.21为例(请根据需要选择版本):
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的环境变量,编辑 ~/.bash_profile 文件:
nano ~/.bash_profile
在文件末尾添加以下内容:
export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
保存并退出,然后执行以下命令使配置生效:
source ~/.bash_profile
验证Go安装:go version
克隆Geth源码仓库:
git clone https://github.com/ethereum/go-ethereum.git cd go-ethereum
编译Geth:
make geth
编译过程可能需要一些时间,具体取决于您的系统性能。
移动Geth到系统PATH: 编译完成后,可执行文件位于 build/bin/geth,将其移动到 /usr/local/bin:

sudo mv build/bin/geth /usr/local/bin/
验证安装: 同样使用 geth version 命令验证。
初始化Geth(可选)
如果您计划运行一个全节点并需要自己的数据目录和创世块文件,可以进行初始化,如果您只是想连接到以太坊主网或其他测试网络,这一步不是必需的,Geth在首次启动时会自动处理。
创建数据目录:
mkdir -p ~/ethereum/mainnet
获取创世块文件: 对于主网,创世块信息是固定的,您可以创建一个 genesis.json 文件,内容如下(这是以太坊主网的创世块信息):
{
"config": {
"chainId": 1,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"mergeNetsplitBlock": 0,
"shanghaiTime": 0,
"cancunTime": 0,
"pragueTime": 1710338131,
"terminalTotalDifficulty": 0,
"terminalTotalDifficultyPassed": true,
"ethash": {}
},
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x100000000",
"difficulty": "0x400000000",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
} 保存到 ~/ethereum/mainnet/genesis.json。
初始化节点:
geth --datadir ~/ethereum/mainnet init ~/ethereum/mainnet/genesis.json
执行后,Geth会在数据目录中生成必要的区块链数据结构。
启动Geth客户端
Geth的启动方式非常灵活,可以根据不同的需求添加不同的参数。
连接到以太坊主网(默认): 这是最简单的启动方式,Geth会连接到以太坊主网并开始同步区块数据:
geth --datadir ~/ethereum/mainnet
启动后,Geth会开始下载和同步区块链数据,这可能需要很长时间(取决于您的网络带宽和硬件性能)。
常用启动参数示例:
--datadir 参数指定数据存储位置。--console 参数启动后,会进入JavaScript交互式控制台(REPL),方便执行命令:geth --datadir ~/ethereum/mainnet --console
--http 和 --http.addr、