以太坊作为全球领先的智能合约平台,其底层客户端软件是参与网络运行、开发 DApp 或进行节点操作的基础,本文将详细介绍如何在 CentOS 系统(以 CentOS 7 为例)上安装和配置最常用的以太坊客户端之一——Geth(Go-Ethereum)。
准备工作
在开始安装之前,请确保您的系统满足以下基本要求:
- 操作系统:本文以 CentOS 7 64位为例,CentOS 8/Stream 或其他基于 RHEL 的系统也可参考,部分命令可能需微调。
- 权限要求:需要具有
sudo权限的用户账户,以便安装软件和修改系统配置。 - 网络连接:稳定的互联网连接,用于下载软件包和依赖项。
- 基本命令行操作:熟悉 Linux 基本命令。
更新系统
保持系统软件包为最新版本是个好习惯,打开终端,执行以下命令:
sudo yum update -y
安装必要依赖
Geth 的编译和运行需要一些基础的依赖库和工具,我们将使用 yum 包管理器来安装它们。
sudo yum groupinstall "Development Tools" -y sudo yum install wget git gcc make glibc-devel openssl-devel libstdc++-devel -y
Development Tools:包含了编译所需的 gcc、make 等基本工具。wget:用于从网络下载文件。git:用于从代码仓库获取 Geth 源码(如果选择编译安装)。- 其他
-devel包:是 Geth 编译所需的头文件库。
安装 Geth
在 CentOS 上安装 Geth,主要有两种方式:使用预编译的二进制文件(推荐)或从源码编译,对于大多数用户,预编译二进制文件更简单快捷。
使用预编译的二进制文件(推荐)
这是最简单的方法,无需编译源码。
-
访问 Geth 官方下载页面: 您可以访问 Geth 的 GitHub 发布页面获取最新版本的下载链
接:https://github.com/ethereum/go-ethereum/releases 在页面上找到 "Assets" 部分,寻找适用于 Linux AMD64 的
geth-linux-amd64-版本号.tar.gz文件。 -
下载 Geth: 假设我们要下载最新稳定版本(v1.13.6,请根据实际情况替换版本号),可以使用
wget命令:# 请将下面的 URL 替换为实际的最新下载链接 wget https://github.com/ethereum/go-ethereum/releases/download/v1.13.6/geth-linux-amd64-1.13.6-4e582c5f.tar.gz
-
解压文件:
tar -xvf geth-linux-amd64-1.13.6-4e582c5f.tar.gz
-
移动到系统路径: 为了方便在任何目录下使用
geth命令,我们将它移动到/usr/local/bin目录:sudo mv geth-linux-amd64-1.13.6/geth /usr/local/bin/
-
验证安装: 执行以下命令检查 Geth 是否安装成功并查看版本:
geth version
如果能看到版本信息,则表示安装成功。
从源码编译(进阶用户)
如果您需要最新开发版或想参与贡献,可以从源码编译。
-
安装 Go 语言环境: Geth 是用 Go 语言编写的,因此需要先安装 Go。
# 下载 Go 二进制包(以 Go 1.21.0 为例,请替换为最新版本) wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz # 解压到 /usr/local 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 source ~/.bashrc
-
获取 Geth 源码:
go get -d github.com/ethereum/go-ethereum
-
编译 Geth:
cd $GOPATH/src/github.com/ethereum/go-ethereum make geth
-
移动到系统路径:
sudo cp build/bin/geth /usr/local/bin/
-
验证安装:
geth version
首次运行与基本配置
安装完成后,您可以尝试启动 Geth,以下是一些常用的启动选项:
-
启动同步节点(快速同步): 这是启动节点并快速同步到最新状态的最常用方式。
geth --syncmode fast --http
--syncmode fast:使用快速同步模式,比默认的全同步快很多。--http:启用 HTTP-RPC 服务,默认端口为 8545,方便与其他工具(如 MetaMask、Truffle)交互。
-
启动并指定数据目录: 您可以指定 Geth 数据存储的位置,避免占用系统盘空间。
mkdir -p ~/ethereum_data geth --datadir ~/ethereum_data --syncmode fast --http
-
启动控制台: 启动 Geth 并直接进入 JavaScript 控制台,可以执行各种命令。
geth --syncmode fast --http console
-
后台运行: 如果您希望 Geth 在后台运行,可以使用
nohup命令:nohup geth --datadir ~/ethereum_data --syncmode fast --http > geth.log 2>&1 &
这会将日志输出到
geth.log文件中。
常用管理命令
-
查看 Geth 进程:
ps aux | grep geth
-
停止 Geth 进程: 如果前台运行,直接按
Ctrl+C,如果后台运行,可以找到进程 ID (PID) 然后杀死:# 首先找到 PID ps aux | grep geth # 假设 PID 是 12345,则执行 kill 12345 # 如果进程顽固,可以使用 kill -9 12345
-
查看日志: 如果使用了
nohup日志会输出到指定文件,否则可以查看系统日志或使用 Geth 的日志选项(如--verbosity)。
注意事项
- 磁盘空间:以太坊区块链数据量非常大(截至 2024 年初已超过 1TB),请确保有足够的磁盘空间,建议使用 SSD 硬盘以加快同步速度。
- 带宽:同步节点和保持节点运行需要稳定的网络连接和一定的上传/下载带宽。
- 安全性:运行全节点会暴露您的 IP 地址和 HTTP-RPC 接口,请确保设置防火墙规则,并考虑为 HTTP-RPC 接口设置认证(如使用
--http.addr和--http.vhosts,或结合反向代理和认证)。 - 版本更新:以太坊网络持续升级,建议关注 Geth 的最新版本,适时进行更新以获得新功能和修复。
通过以上步骤,您应该已经成功在 CentOS 系统上安装并运行了 Geth 客户端,这为您参与以太坊网络、进行开发区块链应用或深入学习以太坊奠定了基础,后续您可以进一步探索 Geth 的更多命令和配置选项,以满足您的具体需求。