在开始搭建以太坊开发环境前,需确保CentOS7系统满足基本要求,并完成基础配置,以下是详细步骤:
打开终端,执行以下命令更新系统并安装必要的开发工具:
# 更新系统软件包 sudo yum update -y # 安装基础开发工具(gcc、make、wget等) sudo yum groupinstall "Development Tools" -y sudo yum install wget curl git vim -y
CentOS7默认使用firewall和SELinux,需开放必要端口(如P2P端口30303、RPC端口8545等):

# 开启防火墙并设置开机自启 sudo systemctl start firewalld sudo systemctl enable firewalld # 开放常用端口(根据实际需求调整) sudo firewall-cmd --permanent --add-port=30303/tcp # Geth P2P端口 sudo firewall-cmd --permanent --add-port=30303/udp # Geth P2P端口 sudo firewall-cmd --permanent --add-port=8545/tcp # HTTP-RPC端口 sudo firewall-cmd --permanent --add-port=8546/tcp # WebSocket-RPC端口 sudo firewall-cmd --reload # 临时关闭SELinux(生产环境建议配置规则而非直接关闭) sudo setenforce 0 # 永久关闭(需重启系统,生产环境慎用) # sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
以太坊核心工具(如Geth)使用Go语言开发,需先安装Go环境,推荐安装Go 1.19或更高版本(以太坊官方兼容版本)。
访问Go官方下载页面(https://golang.org/dl/)获取Cent7对应的tar包,或直接使用wget下载:
# 下载Go 1.19.5版本(可根据需要替换为最新版本) wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz
# 创建/usr/local/go目录并解压(推荐安装到/usr/local,避免覆盖系统Go) sudo tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz # 配置环境变量(编辑/etc/profile文件) sudo vim /etc/profile
在文件末尾添加以下内容:
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
保存后执行以下命令使配置生效:

source /etc/profile
go version # 查看Go版本(应显示go version go1.19.5 linux/amd64) go env # 查看Go环境变量(确认GOROOT、GOPATH等配置正确)
Geth(Go-Ethereum)是以太坊官方实现的Go语言客户端,支持节点运行、交易签名、智能合约交互等功能。
推荐使用Go官方模块安装,确保获取最新稳定版本:
# 设置Go代理(加速下载,国内用户可选) export GOPROXY=https://goproxy.cn,direct # 安装Geth(默认安装到$GOPATH/bin) go get -u github.com/ethereum/go-ethereum@latest
若Go环境变量配置正确,$GOPATH/bin已包含在PATH中,可直接使用geth命令,若未找到,可手动创建软链接:
# 确认geth安装路径 ls $GOPATH/bin/geth # 创建软链接到/usr/local/bin(可选,方便全局调用) sudo ln -sf $GOPATH/bin/geth /usr/local/bin/geth
geth version # 查看Geth版本(显示版本号及commit信息)
Truffle是以太坊流行的开发框架,用于智能合约编译、测试和部署,需依赖Node.js环境。

使用nvm(Node Version Manager)可灵活管理Node.js版本,避免系统环境冲突。
# 下载nvm安装脚本 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash # 重新加载终端配置(或执行source ~/.bashrc) source ~/.bashrc
# 安装Node.js 18 LTS版本(以太坊开发兼容性较好) nvm install 18 # 切换到Node.js 18并设置为默认版本 nvm use 18 nvm alias default 18 # 验证安装 node -v # 应显示v18.x.x npm -v # 显示npm版本
# 全局安装Truffle(npm会自动处理依赖) npm install -g truffle # 验证Truffle安装 truffle version # 显示Truffle版本及环境信息
MetaMask是以太坊区块链钱包,支持与DApp交互,直接在Chrome、Firefox等浏览器访问https://metamask.io/下载插件并安装,无需命令行操作。
智能合约语言Solidity需编译器solc,可通过npm安装:
# 安装solc(与Truffle版本兼容) npm install -g solc # 验证solc版本 solcjs --version
完成上述步骤后,需验证各工具是否正常协同工作。
# 创建项目目录 mkdir eth-demo && cd eth-demo # 初始化Truffle项目(会生成contracts、migrations、test等目录) truffle init # 查看项目结构 ls -l
# 编辑contracts/Contract.sol(示例合约) vim contracts/Contract.sol
输入以下测试合约代码:
pragma solidity ^0.8.0;
contract Contract {
uint256 public value;
constructor() {
value = 100;
}
function setValue(uint256 _value) public {
value = _value;
}
}
编译合约:
truffle compile # 成功后生成build/contracts/Contract.json
使用Geth启动一个私有测试链(无需连接主网,适合开发调试):
# 在项目目录下执行,启动私有节点(端口30303,数据目录./data) geth --datadir ./data --networkid 15 --http --http.addr "0.0.0.0" --http.port 8545 --http.api "eth,net,web3,personal" --allow-insecure-unlock
参数说明:
--datadir:指定区块链数据存储目录--networkid 15:设置私有网络ID(避免与主网冲突)--http:开启HTTP-RPC服务--http.addr "0.0.0.0":允许任意IP访问(生产环境需限制为特定IP)--http.port 8545:RPC服务端口--http.api:开放的API接口在新的终端窗口中,执行以下步骤部署合约:
# 启动Geth控制台 geth attach http://localhost:8545
# 创建新账户(密码需记录)
personal.newAccount("your_password")
# 查看账户列表(第一个账户为默认账户)
eth.accounts
# 解锁账户(部署合约