为了省钱,用了aws的m6g,真是没谁了,因为安全问题,不敢用第三方的镜像,centos7又不支持m6g,于是只能硬着头皮用cento 8 arm版本。

准备工作

服务器准备

比如禁用SELINUX,开启文件数量限制这种基本操作

#当前有效
setenforce 0
#重启也有效
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

ulimit -SHn 102400
cat >> /etc/security/limits.conf << EOF
*           soft   nofile       102400
*           hard   nofile       102400
*           soft   nproc        102400
*           hard   nproc        102400
EOF

服务器环境

yum搞好
一些工具包如telnet,wget,git等,可以提前安装

因为centos8不再维护的原因。repo进行了迁移,这样干

sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*

安装golang

我使用yum安装最新版go是1.16。使用1.16安装go-ethereum,make时各种出错,最终还是使用手动安装最新版本解决

1、下载文件

国内下载 https://golang.google.cn/dl/

wget https://golang.google.cn/dl/go1.19.1.linux-arm64.tar.gz

2、解压文件到 /usr/local

【重要】如果之前已经安装过go的版本,先清空下go下面src,不然可能会报一些previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:16:24的错误
rm -rf /usr/local/go
解压go包

tar -zxf go1.19.1.linux-arm64.tar.gz -C /usr/local

3、配置环境变量,vim指令编辑 .bashrc

有人喜欢用/etc/profile,我喜欢用这个,有一次编辑后source /etc/profile碰到一个系统级别的错误,你敢信
https://bugzilla.redhat.com/show_bug.cgi?id=2025709

vim ~/.bashrc

4、在.bashrc文件末尾添加以下配置,输入 :wq保存

#golang config
export GOROOT=/usr/local/go 
export GOPATH=/data/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

创建go的path目录

mkdir /data/gopath

5、使换将变量配置生效,并查看golang的版本

source ~/.bashrc
go version

下载和部署

1 git下载

git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
make all

2 把geth加到全局

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:{你的目录}/go-ethereum/build/bin

3 source生效

source ~/.bashrc

4 启动

具体参数就参照geth官方文档了
https://geth.ethereum.org/docs/install-and-build/installing-geth