以太坊作为全球领先的智能合约平台,其客户端软件是与以太坊网络交互的核心工具,在CentOS 7系统上安装以太坊客户端(以最常用的Geth为例)是许多开发者和节点运营者的第一步,本文将详细介绍如何在CentOS 7系统上下载、安装、配置并初步运行Geth以太坊客户端。
准备工作
在开始安装之前,请确保您的CentOS 7系统满足以下基本条件:
- 系统版本:确保您安装的是CentOS 7或更高版本,可以通过
cat /etc/redhat-release命令查看。 - 更新系统:保持系统软件包为最新版本是一个好习惯,执行以下命令更新系统:
sudo yum update -y
- 网络连接:确保您的服务器能够连接到互联网,以便下载Geth安装包和依赖。
- 用户权限:建议使用具有sudo权限的用户进行操作,以便安装软件和修改系统配置。
安装依赖项

在编译和运行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-RPC服务:
--http和--http.addr、
- 指定数据目录:
