先找到geth进程ID
阿里云服务器搭建以太坊全指南:从入门到实践**

以太坊作为全球第二大加密货币平台,以及智能合约和去中心化应用(DApps)的领先平台,吸引了无数开发者和研究者的目光,拥有一个属于自己的以太坊节点,无论是用于参与网络验证、开发测试DApp,还是进行数据分析,都具有重要的价值,本文将详细介绍如何利用阿里云服务器,一步步搭建一个属于自己的以太坊节点(以目前主流的Geth客户端为例)。
准备工作:为什么选择阿里云服务器?
在开始之前,我们需要明确为何选择阿里云服务器搭建以太坊节点:
- 稳定性与可靠性:阿里云作为国内领先的云服务提供商,其服务器具有高可用性和稳定性,能保证节点的持续运行。
- 网络带宽:以太坊节点需要同步大量的区块数据,对网络带宽有一定要求,阿里云提供稳定的公网IP和充足的带宽,确保同步效率。
- 灵活性与可扩展性:根据需求选择不同配置的服务器,后期可根据业务发展轻松升级配置。
- 安全性:阿里云提供多层次的安全防护体系,帮助保护服务器和节点安全。
搭建前准备:阿里云服务器配置与工具安装
购买与配置阿里云服务器
- 选择实例:登录阿里云控制台,选择“云服务器ECS”,对于搭建以太坊全节点,建议选择以下配置:
- 操作系统:推荐使用 Ubuntu Server 20.04 LTS 或 04 LTS 64位版本,社区支持好,兼容性佳。
- 实例规格:至少 2核4GB 内存起步,推荐 4核8GB 或更高,因为同步数据和运行节点会占用较多CPU和内存。
- 系统盘:建议 SSD云盘,容量至少 100GB,但考虑到以太坊数据量(目前已超过TB级别且持续增长),建议 200GB 或更大,甚至使用数据盘进行扩展。
- 带宽:建议 5Mbps 或更高,以保证同步速度。
- 创建实例:按照向导完成实例创建,设置登录密码或SSH密钥对(推荐使用密钥对更安全)。
- 安全组配置:创建安全组,并开放以下端口:
- TCP 30303:Geth的默认P2P端口,用于节点间通信。
- TCP 8545:JSON-RPC API端口,用于与节点交互(可选,如果需要远程调用API)。
- SSH端口(默认22):用于远程服务器管理。
连接服务器
使用SSH工具(如PuTTY、Xshell或终端)连接到你的阿里云服务器。
ssh root@你的服务器公网IP
更新系统并安装必要工具
sudo apt update sudo apt upgrade -y sudo apt install -y build-essential unzip wget git
安装与运行以太坊Geth客户端
Geth是以太坊官方的Go语言实现,是最常用的以太坊客户端之一。
下载Geth
访问Geth的官方GitHub发布页面:https://github.com/ethereum/go-ethereum/releases 选择适合Linux系统的最新稳定版本(通常是以linux-amd64结尾的zip文件)。 下载最新版本(假设为v1.13.6):
wget https://github.com/ethereum/go-ethereum/releases/download/v1.13.6/geth-linux-amd64-v1.13.6-20240220.zip
解压并安装Geth
unzip geth-linux-amd64-v1.13.6-20240220.zip sudo mv geth-linux-amd64-v1.13.6/geth /usr/local/bin/
验证安装:
geth version
如果显示版本信息,则安装成功。

初始化节点(创世区块)
首次运行前,需要初始化一个数据目录,用于存放区块链数据。
mkdir -p ~/ethereum_data geth --datadir ~/ethereum_data init /path/to/genesis.json
genesis.json是创世区块配置文件,如果你加入的是公有链(如主网、测试网),通常不需要自己创建,Geth会自动使用默认的,如果你是搭建私有链,则需要自己编写genesis.json,对于公有网同步,此步可省略,直接同步即可。
启动并同步以太坊节点
启动主网节点(同步速度较慢,需要大量时间和空间):
geth --datadir ~/ethereum_data --syncmode full --http --http.addr "0.0.0.0" --http.port "8545" --http.api "eth,net,web3,personal" --ws --ws.addr "0.0.0.0" --ws.port "8546" --ws.api "eth,net,web3,personal"
参数说明:
--datadir ~/ethereum_data:指定数据目录。--syncmode full:同步模式,full表示完整同步,会下载所有区块和状态数据,最慢但最完整,也可选择snap(快速同步,默认,只下载最近的状态和区块头)或light(轻节点)。--http:启用HTTP-RPC服务。--http.addr "0.0.0.0":HTTP-RPC监听地址,0.0.0表示监听所有网络接口。--http.port "8545":HTTP-RPC监听端口。--http.api "eth,net,web3,personal":开放的HTTP-RPC API。--ws:启用WebSocket-RPC服务。--ws.addr "0.0.0.0":WebSocket-RPC监听地址。--ws.port "8546":WebSocket-RPC监听端口。--ws.api "eth,net,web3,personal":开放的WebSocket-RPC API。
启动测试网节点(例如Ropsten测试网,已废弃,可考虑Sepolia或Goerli):
geth --datadir ~/ethereum_data --sepolia --syncmode full --http --http.addr "0.0.0.0" --http.port "8545"
--sepolia表示连接到Sepolia测试网。
后台运行节点
为了使节点在后台持续运行,可以使用nohup命令结合&:

nohup geth --datadir ~/ethereum_data --syncmode full --http --http.addr "0.0.0.0" --http.port "8545" --http.api "eth,net,web3,personal" > ~/geth.log 2>&1 &
这样,Geth会在后台运行,日志会输出到~/geth.log文件中。
你也可以使用screen或tmux等工具来管理会话,避免SSH断开导致节点停止。
节点管理与维护
查看节点同步状态
连接到服务器,执行:
geth attach ~/ethereum_data/geth.ipc
进入Geth控制台后,可以输入以下命令:
eth.syncing
如果返回false,表示同步完成;如果返回一个对象,则表示仍在同步,其中currentBlock和highestBlock可以查看同步进度。
停止节点
# 然后杀死进程 sudo kill <PID>
如果使用了nohup,也可以直接pkill geth。
管理账户
在Geth控制台中可以创建和管理账户:
personal.newAccount("你的密码") // 创建新账户
personal.listAccounts // 列出所有账户
personal.unlockAccount(eth.accounts[0], "密码") // 解锁账户
数据盘扩容(如果需要)
随着区块链数据的增长,可能会遇到磁盘空间不足的问题,阿里云支持在线扩容数据盘:
- 在阿里云ECS控制台对数据盘进行扩容。
- 登录服务器,使用
lsblk或df -h查看分区和文件系统。 - 如果是云盘,通常需要扩展文件系统:
- 对于ext4文件系统:
sudo resize2fs /dev/vdb1(假设数据盘是/dev/vdb1)
- 对于ext4文件系统:
注意事项与最佳实践
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。




