centos7下部署区块链浏览器BlockScount:v4.1.1

1、查看安装需要的版本

进入官方源码https://github.com/blockscout/blockscout   查看.tool-versions里的内容 不然会导致版本错误的原因 若是安装以前版本的blockscout也许查看其中的.tool-versions文件。

我这里是部署 BlockScout v4.1.1

其中tool-versions 要求内容为elixir 1.12.3-otp-24; erlang 24.2 ;nodejs 16.13.0

其他工具版本需求可以查看 官方文档:https://docs.blockscout.com/for-developers/information-and-settings/requirements

2、软件安装:

部署环境:

OS版本:centos7

BlockScount:v4.1.1

Erlang安装:

#下载软件包
   wget https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/esl-erlang_24.2-1~centos~7_amd64.rpm
#安装依赖
yum -y update

yum -y install wxGTK-devel unixODBC-devel
#安装erlang

yum -y install esl-erlang_24.2-1~centos~7_amd64.rpm

查看安装是否成功:

 Elixir安装

#下载elixir
wget https://github.com/elixir-lang/elixir/releases/download/v1.12.3/Precompiled.zip

#解压

yum -y install zip

yum -y install unzip

mkdir /opt/elixir

cp Precompiled.zip  /opt/elixir

cd /opt/elixir

unzip Precompiled.zip

配置环境变量

vi /etc/profile
# 键入vim /etc/profile 在末尾添加如下内容
export PATH=$PATH:/opt/elixir/bin
# 生效环境变量
source /etc/profile

验证是否安装成功:

 PostgresSQL安装:

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装RPM存储库
yum install postgresql12
# 安装客户端软件包
yum install postgresql12-server 

# 配置环境变量,/usr/pgsql-12/bin 是默认安装目录
vi /etc/profile
#末尾加入:
export PATH=/usr/pgsql-12/bin:$PATH

export LD_LIBRARY_PATH=/usr/pgsql-12/lib

# 初始化数据库
postgresql-12-setup initdb
 # 设置PostgreSQL服务为开机启动
systemctl enable postgresql-12
# 启动PostgreSQL服务
systemctl start postgresql-12

数据库初始配置

# 切换到postgres账户
su postgres
# 进入SQL Shell
psql
# 键入如下指令,修改密码,笔者将密码修改为123456。
ALTER USER postgres WITH PASSWORD '123456';
# 键入 “\q”退出SQL Shell,键入exit登出postgres账户
\q
exit

修改数据库访问权限

此外我们还需要修改数据的访问权限:(注意其中字母及#号)

vim /var/lib/pgsql/12/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD


 # "local" is for Unix domain socket connections only

 local   all             all                                     md5

 # IPv4 local connections:

 host    all             all             127.0.0.1/32            md5

 # IPv6 local connections:

 host    all             all             ::1/128                 md5

 # Allow replication connections from localhost, by a user with the

 # replication privilege.

#local   replication     all                                     peer

#host    replication     all             127.0.0.1/32            ident

#host    replication     all             ::1/128                 ident

host    all              all             0.0.0.0/0               md5

设置允许远程访问数据库:

vi /var/lib/pgsql/12/data/postgresql.conf

# - Connection Settings -

listen_addresses = '*'                  # what IP address(es) to listen on;

                                        # comma-separated list of addresses;

                                        # defaults to 'localhost'; use '*' for all

                                        # (change requires restart)

port = 5432                             # (change requires restart)

最后我们重启数据库:

systemctl restart postgresql-12

安装PostGIS

为了避免部署BlockScout过程中创建表示出现的ERROR: could not open extension control异常,我们需要为PostgreSQL安装PostGIS拓展插件。

不同PostgreSQL版本需要安装的PostGIS版本也不相同,请参考映射表格进行安装。

1、装epel源

yum install epel-release

#安装

yum -y install postgis30_12.x86_64

开启插件

 # 切换到postgres账户

 su postgres 
#进入SQL Shell

psql
#开启postgis插件
postgres=# create extension postgis; 
postgres=# create extension postgis_topology;
postgres=# create extension fuzzystrmatch;
postgres=# create extension address_standardizer; 
postgres=# create extension address_standardizer_data_us;
postgres=# create extension postgis_tiger_geocoder;
//查看版本,验证安装是否成功
postgres=# SELECT PostGIS_full_version();

//退出执行

systemctl restart postgresql-12 
# 最后,测试一下是否修改成功,键入密码

psql -h 127.0.0.1 -p 5432 -U postgres 


安装NodeJs

#下载nodejs
wget https://nodejs.org/dist/v14.0.0/node-v16.3.0-linux-x64.tar.xz
#解压缩
tar -xf node-v16.3.0-linux-x64.tar.xz
#移动重命名
mv node-v16.3.0 node

#修改环境变量

vi  /etc/profile

export PATH=$PATH:/data/node/bin"

source /etc/profile

测试是否成功

node -v

npm -v

安装基础依赖

安装Automake

yum --enablerepo=epel group install -y "Development Tools"

安装Libtool

 yum install -y libtool

安装Inotify-tools

yum install inotify-tools

安装GCC Compiler

yum install -y gcc-c++

安装GMP

yum --enablerepo=epel install -y gmp-devel

安装Make

yum install make

#配置主机host文件

vi /etc/hosts

127.0.0.1       localhost blockscout blockscout.local

255.255.255.255 broadcasthost

::1             localhost blockscout blockscout.local

安装Rust

curl https://sh.rustup.rs -sSf | sh

source $HOME/.cargo/env

3、初始化BlockScout

手动部署
1、拉取源码:

(你可以配置 连接外网代理地址 

export http_proxy=http://你的本地网络地址XX:8118
export https_proxy=http://你的本地网络地XX:8118  )

git clone https://github.com/poanetwork/blockscout
cd blockscout

2、添加数据库连接环境变量:

export DATABASE_URL="postgresql://postgres:[email protected]:5432/blockscout"

export DB_HOST=127.0.0.1

export DB_PASSWORD=123456

export DB_PORT=5432

export DB_USERNAME=postgres

3、添加secret_key_base环境变量:

export SECRET_KEY_BASE="VTIB3uHDNbvrY0+60ZWgUoUBKDn9ppLR8MI4CpRz4/qLyEFs54ktJfaNT6Z221No"

或者你也可以先生成一个新的secret_key_base,生成过程中请耐心等待:

# mix 由elixir提供,请务必保证elixir成功安装

mix phx.gen.secret

若服务器在内陆,可能会出现获取依赖超时现象,自然报错后请重试!

4、如果您以前已经部署过,请从先前的版本中删除静态资产:

mix phx.digest.clean
5、配置客户端连接

BlockScout目前支持Parity(默认),Geth和Ganache三种形式的客户端连接,这里我们使用infura.io提供的免费API,如果你还没有infura.io可以去https://infura.io/申请。

export ETHEREUM_JSONRPC_VARIANT=geth

export ETHEREUM_JSONRPC_HTTP_URL="https://mainnet.infura.io/v3/be9b66ce5b594ca5b6a4b286695ac9b0"

6、安装Mix依赖,并对其进行编译并编译应用程序:

  mix do deps.get, local.rebar --force, deps.compile, compile
# 或者你也可以将其拆解开之后执行,这样有助于你更细错误信息
mix do deps.get    
mix do local.rebar --force
mix do deps.compile
mix do compile

再次进行友谊提醒,若服务器在内陆,可能会出现获取依赖超时现象,自然报错后请重试!

需连接外网代理,如依赖还报超时。需将依赖时间适当调长。

7、删除、创建和迁移数据库

执行mix  ecto.create, ecto.migrate

请注意,ecto.drop将从数据库中删除所有数据。如果您不想丢失所有数据,请不要在生产中执行它!这里我没有执行

8、安装Node.js依赖

chmod -R 777 blockscout/

cd blockscout/apps/block_scout_web/assets
npm install -g cnpm --registry=https://registry.npm.taobao.org 

cnpm install && node_modules/webpack/bin/webpack.js --mode production

cd blockscoutr/apps/explorer

cnpm install

9、建立用于部署的静态资产

cd /blockscout

mix phx.digest
#如提示缺少目录 为可预知范围内正常报错

10、启用HTTPS。Phoenix服务器仅与HTTPS一起运行。

cd /blockscout/apps/block_scout_web
mix phx.gen.cert blockscout blockscout.local

11、返回到源码根目录并启动Phoenix Server

#开放端口
firewall-cmd --zone=public --add-port=4000/tcp --permanent   # 开放5672端口
firewall-cmd --reload   # 配置立即生效
firewall-cmd --zone=public --list-ports   #查看防火墙所有开放的端口
cd /blockscout
mix phx.server

最后,在浏览器输入http://你的centos的ip地址:4000/见到如下界面则表示部署成功:

猜你喜欢

转载自blog.csdn.net/m0_55345224/article/details/123228528