以太坊-geth环境配置记录

​一、在ESXI上创建ubuntu虚拟机

打开esxi客户端或者浏览器管理页面新建虚拟机,一步步的根据需求选择相应的cpu核数,内存,硬盘。创建虚拟机后,选择Ubuntu18.04镜像。打开控制台进行ubuntu系统的安装。

安装完毕。。。

二、设置root账户密码

1.为root设置初始密码

(1)登录系统,打开终端,输入命令:

sudo passwd root

(为root用户设置密码)

(2)设置root密码(建议简单点,没必要那么复杂);

(3)重复root密码;

2.修改/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf文件内容

 

终端输入:

sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

打开文件,在文件末尾加入如下两行,完成后保存并关闭(注意这一步,千万不要删除文件中原本的两行内容)

greeter-show-manual-login=true



all-guest=false

3.进入/etc/pam.d文件夹下,修改gdm-autologin和gdm-password文件内容(参考第2步的命令):

gdm-autologin文件注释掉auth required pam_success_if.so user!=root quiet_success这一行

gdm-password文件注释掉auth required pam_success_if.so user!=root quiet_success这一行

说明:注释只需要在这一行前加"#"即可,例如:

#auth required pam_success_if.so user!=root quiet_success

4.修改/root/.profile文件

终端输入:

sudo gedit /root/.profile

打开文件,将最后一行改为以下:

tty -s && mesg n || true

 

保存并关闭,重启,重启之后选择“未列出”输入账号root密码

完成。

三、开启SSH并允许root用户远程登录

1.更新源列表

使用ctrl+alt+T打开命令行终端,输入下面代码来更新源列表

sudo apt-get update

2.安装openssh-client

在终端中输入: sudo apt-get install openssh-client,来安装openssh-client

sudo apt-get install openssh-client

3.安装openssh-service

在终端中输入: sudo apt-get install openssh-service,来安装openssh-server

sudo apt-get install openssh-server

4.启动ssh服务

在终端中输入:sudo service ssh start,来启动ssh服务

sudo service ssh start

在终端中输入:ps -e|grep ssh,可以查看是否启动成功,如果有sshd,就说明启动成功。

输出如下:

[email protected]:~$ sudo ps -e | grep ssh

1529 ?    00:00:00 ssh-agent------------对应客户端

3366 ?    00:00:00 sshd------对应服务器端

ssh-agent表示ssh-client启动,sshd表示ssh-server启动了

sudo ps -e | grep ssh

5.允许所有ip远程登录

  1. [email protected] Desktop]# vi /etc/hosts.allow

     

  2. sshd: ALL ##允许所有ip主机均能连接本机

6.查看IP地址

在终端中输入:ifconfig,来查看IP地址(另一种查看IP的方法是,输入:ip add)

ifconfig

假如出现command not found,可以执行下面的命令来安装net-tools

sudo apt install net-tools

然后再重新输入ifconfig,就可以查看IP地址了。

7.xshell配置

接下来,我们打开xshell,然后在页面中选择新建:

然后在弹出的窗口中,设置一下我们当前会话的名称,填写刚才查到的IP地址,端口号一般不用设置,默认就好。

然后左侧列表,点击第二个“用户身份验证”,然后在右侧填写我们登陆ubantu的用户名和密码。

最后,点击确定,配置就完成了。

我们的会话窗口会出现一个我们刚才配置好的会话,选择它,点击下方的链接试试看吧!

8.允许root用户远程登录

1、进入Ubuntu系统

首先使用普通用户登录到Ubuntu系统,然后使用sudo命令切换到root用户下。

使用到的命令:

[email protected]:~$ sudo su -

[sudo] password for dante:          #这里需要输入当前登录用户的密码。

2、编辑SSH服务配置文件

编辑SSH服务的配置文件sshd_config,修改SSH的端口和root用户权限。

使用到的命令:(按字母“i”进入编辑模式,按ESC退出编辑模式,“:wq”保存退出)。

[email protected]:~# vim /etc/ssh/sshd_config

1、找到# port 22所在的那一行,复制该行内容并修改。

将“#port 22”修改为“port 22”(将前面的“#”去掉)。

该行内容为设置SSHd服务的端口号

2、找到#PermitRootLogin prohibit-password那一行,复制该行内容并修改。

将“#PermitRootLogin prohibit-password”修改为“PermitRootLogin yes”

改行内容为设置允许root用户远程登录。

然后保存该文件,然后重启服务。

使用到命令为:

[email protected]:~# service sshd restart

3、修改root用户密码

修改root用户密码,建议将root用户密码设置尽量复杂。

使用到命令如下

[email protected]:~# passwd root

Enter new UNIX password:                 #输入root用户密码

Retype new UNIX password:               #再次输入root用户密码

passwd: password updated successfully

如果看到“passwd: password updated successfully”,则证明密码修改成功。

4、登录验证

使用root用户登录验证

四、换源

更换apt的下载源,官方下载源很慢,我们需要更换到国内的镜像站

*2.1 进入 /etc/apt 目录*

cd /etc/apt

2.2 备份 sources.list 文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

2.3 打开 sources.list 文件进行修改并添加阿里云镜像

#在文件最前面添加即可
sudo vi /etc/apt/sources.list  

# 阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

五、安装go

1 安装 go

#进入根目录
cd ~

#下载压缩包
wget https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gz

#对压缩包解压
tar -xzf go1.13.4.linux-amd64.tar.gz

#删除压缩包
rm -rf go1.13.4.linux-amd64.tar.gz

#把根目录下的 go 文件夹移动到 /usr/local/ 目录下
mv go/ /usr/local/

#修改环境变量
vi ~/.bashrc

#GOROOT 路径是软件安装路径
export GOROOT=/usr/local/go

#GOPATH 路径是平时我们的工作路径,go项目放置在这个目录下
export GOPATH=$HOME/go

#添加到环境变量
export PATH=$PATH:/usr/local/go/bin

#退出 bashrc 文件然后更新环境变量
source ~/.bashrc

#使用 go version 可以查看go是否安装成功
go version

#go env 可以查看 go 的环境变量是否设置成功
go env

六、安装nodejs

 

#请尽量避免在 Ubuntu 上使用 apt-get 来安装 node.js, 如果你已经这么做了,请手动移除
sudo apt-get purge nodejs && sudo apt-get autoremove && sudo apt-get autoclean

#使用 nvm 来安装
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

#查看 nvm 是否安装成功
nvm --version

#查看 nodejs 可以安装的所有版本
nvm ls-remote     

#目前 nodejs 最新的长期支持版为 12.18.2
nvm install 12.18.2

#查看 nodejs 版本
node -v

七、用 Geth 搭建以太坊私链

一、apt-get方式

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum 
$ sudo apt-get update
$ sudo apt-get install ethereum

二、源码安装

1、克隆 github 仓库,取源代码

$ git clone https://github.com/ethereum/go-ethereum.git

2、构建 Geth,切换到下载源代码的目录并使用 make 命令:

$ cd go-ethereum 
$ make geth

3、我们将看到 Go 编译器构建每个组件的构建信息(部分信息我这里已省略),直到它生成 geth 可执行文件

build/env.sh go run build/ci.go install ./cmd/geth
go: downloading github.com/cespare/cp v0.1.0
go: downloading golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
go: downloading github.com/Azure/azure-storage-blob-go v0.7.0
go: extracting github.com/cespare/cp v0.1.0
go: extracting github.com/Azure/azure-storage-blob-go v0.7.0
go: downloading github.com/Azure/azure-pipeline-go v0.2.2
go: extracting github.com/Azure/azure-pipeline-go v0.2.2
go: downloading github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d
go: extracting golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
go: extracting github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d
go: finding github.com/cespare/cp v0.1.0
go: downloading github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa
............................
github.com/naoina/go-stringutil
github.com/naoina/toml/ast
github.com/naoina/toml
github.com/ethereum/go-ethereum/eth/tracers
github.com/ethereum/go-ethereum/eth
github.com/ethereum/go-ethereum/les
github.com/ethereum/go-ethereum/ethstats
github.com/ethereum/go-ethereum/cmd/utils
github.com/ethereum/go-ethereum/cmd/geth
Done building.
Run "./build/bin/geth" to launch geth.

到这里的第二步问题就出现了,我们的服务器因为不知道什么原因git clone一点也下不下来,尝试配置hosts添加对应ip也无果,但是发现了这个好方法,曲线救国,换一个镜像。

2.1 没关系,换URL

我们可以使用github的镜像网站,

github.com.cnpmjs.org

github.com替换为上述URL即可,然后去clone,速度飞快!

 

确实,速度飞快!!!

另外go的模块网址也被墙了,替换一下其他的网站吧。

 

因为Go 1.14设置默认GOSUMDB=sum.golang.org,而这个网站被墙了(1)设置GOPROXY代理:(2)设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔:(2)可以设置 GOSUMDB=“sum.golang.google.cn”, 这个是专门为国内提供的sum 验证服务-w 标记 要求一个或多个形式为 NAME=VALUE 的参数, 并且覆盖默认的设置

啥都访问不了,就很烦,可能对以后的工作产生麻烦,所以记录一下。

八、创建创世块

1.创建创世文件genesis.js

官方给出的创世文件

 

 

{

"config": {

"chainId": <arbitrary positive integer>,

"homesteadBlock": 0,

"eip150Block": 0,

"eip155Block": 0,

"eip158Block": 0,

"byzantiumBlock": 0,

"constantinopleBlock": 0,

"petersburgBlock": 0,

"istanbulBlock": 0

},

"alloc": {},

"coinbase": "0x0000000000000000000000000000000000000000",

"difficulty": "0x20000",

"extraData": "",

"gasLimit": "0x2fefd8",

"nonce": "0x0000000000000042",

"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"timestamp": "0x00"

}

2.创建创世块

geth --datadir . --init genesis.json

 

3.用geth创建账户,开始挖矿

geth --datadir . --networkid 15 --rpc --console 2>output.log

1)创建账号

personsal.newAccounts()

 

2)开始挖矿

miner.start(1)

 

主要的问题在于服务器的网络问题。

参考链接:

https://blog.csdn.net/qq_44641344/article/details/105102915?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

https://blog.csdn.net/dantesite/article/details/86157787

https://mp.weixin.qq.com/s?src=11&timestamp=1603019224&ver=2652&signature=O4F3saFejB1RYcJ1SSddVhZFtF530ds*d9eLnR*HSKZ34rkkFxxuxVCAmoLoWaahsnRciEMUO7WcsxEf1BiuCbdS9NXBwdeCOBnFQZDMdtAd2AXlM3z6KH91e0ObNiZJ&new=1

https://www.alexlp.com/2019/12/03/gethchain/

https://zhuanlan.zhihu.com/p/158381955