0. NKN运行所需要的文件
- nknd
- config.json
- wallet.dat
- Log 日志目录
- Chain 目录 如果不存在 矿机会自动创建 并从0开始同步
所以 你不需要像之前那么复杂的 编译,或者 NKNMining 那个
只需要根据你的机子架构系统版本来选择编译好的矿机
下载地址 https://github.com/nknorg/nkn/releases
也就是说 你的 目录下有下面几个 就可以 运行矿机了
- nkn
Chain
Log
nknd
config.json
wallet.dat
运行 命令
/usr/bin/nohup ./nknd -p 钱包密码 --no-check-port > /dev/null 2>&1 &
1. 原理
- 通过自搭建web服务器执行指定shell脚本
比如 访问 http://xxx.com/?a=http://xxx.com/install.sh
服务器就会下载 install.sh 并执行
2. 编写Web服务器(go代码)
如何编译 自行搜索
为了防止别人调用,需要自己添加访问控制权限
编译后 得到可执行文件 这里重命名为 simple-server
package main
import (
"fmt"
"github.com/lizongshen/gocommand"
"net/http"
)
func IndexHandler(w http.ResponseWriter, r *http.Request) {
vars := r.URL.Query()
a, a_ok := vars["a"]
if !a_ok {
fmt.Fprintln(w, "参数错误")
} else {
b := a[0]
gocommand.NewCommand().Exec("rm -rf run.sh")
gocommand.NewCommand().Exec("wget -O run.sh " + string(b))
gocommand.NewCommand().Exec("chmod +x run.sh")
gocommand.NewCommand().Exec("nohup ./run.sh > /dev/null 2>&1 &")
fmt.Fprintln(w, "start")
}
}
func FaviconHandler(w http.ResponseWriter, r *http.Request) {
// fmt.Println("123")
}
func main() {
http.HandleFunc("/favicon.ico", FaviconHandler)
http.HandleFunc("/", IndexHandler)
http.ListenAndServe(":8088", nil)
}
3. 在需要运行NKN的节点机子上运行该web服务器
这里假定目录为 /root/server/
把上面编译好的 simple-server 放入到 该目录
分配可执行权限 chmod +x /root/server/simple-server
运行,命令 nohup /root/server/simple-server > /dev/null 2>&1 &
---- 华丽的分割线 — 每个机器都 执行 3 的步骤 后面就可以批量部署维护了
4. 本人的 shell 脚本
需要根据你自己的情况修改
我是有单独的机子 放置 shell 脚本 config.json wallet.dat
#!/bin/bash
MY_NKN_REMOTE_URL="http://xxxxx.com/nkn/test/scripts"
NKN_VERSION="v0.5.5-alpha"
NKN_PLATFORM="linux-amd64"
NKN_CHAIN_VERSION="Chain_395413"
NKN_WALLET_URL="$MY_NKN_REMOTE_URL/wallet.dat"
NKN_CONFIG_URL="$MY_NKN_REMOTE_URL/config.json"
NKN_RELEASE_URL="https://github.com/nknorg/nkn/releases/download/$NKN_VERSION/$NKN_PLATFORM.zip"
NKN_CHAIN_URL="https://storage.googleapis.com/nkn-testnet-snapshot/$NKN_CHAIN_VERSION.zip"
BASE_DIR="/root"
NKN_BASE_DIR="$BASE_DIR/nkn"
MONITOR_SCRIPTS_DIR="$BASE_DIR/monitor-scripts"
rm -rf $NKN_BASE_DIR
rm -rf $MONITOR_SCRIPTS_DIR
rm -rf $BASE_DIR/linux-*
echo "#" >> conf && crontab conf && rm -f conf
cd $BASE_DIR
apt-get update
apt-get install -y wget unzip
# 下载nkn执行程序
wget -N $NKN_RELEASE_URL
unzip $NKN_PLATFORM.zip
mv $NKN_PLATFORM nkn
# 下载nkn执行程序
# 建立 Log 目录
mkdir $NKN_BASE_DIR/Log
# 建立 Log 目录
# 下载 Chain 账本
wget -N $NKN_CHAIN_URL
unzip $NKN_CHAIN_VERSION.zip
mv Chain $NKN_BASE_DIR/Chain
# 下载 Chain 账本
# 下载配置文件
wget -N $NKN_CONFIG_URL
mv config.json $NKN_BASE_DIR
# 下载配置文件
# 下载钱包文件
wget -N $NKN_WALLET_URL
mv wallet.dat $NKN_BASE_DIR
# 下载钱包文件
# 清理文件
rm $BASE_DIR/$NKN_PLATFORM.zip
rm $BASE_DIR/$NKN_CHAIN_VERSION.zip
# 清理文件
# 定时任务
mkdir $MONITOR_SCRIPTS_DIR
wget -N $MY_NKN_REMOTE_URL/09-nkn-monitor.sh
chmod +x 09-nkn-monitor.sh
mv 09-nkn-monitor.sh $MONITOR_SCRIPTS_DIR
echo "#" >> conf && crontab conf && rm -f conf
crontab -l > conf && echo "* * * * * /root/monitor-scripts/09-nkn-monitor.sh &" >> conf && crontab conf && rm -f conf
# 定时任务
定时监控脚本
#!/bin/bash
# * * * * * /root/monitor-scripts/09-nkn-monitor.sh &
pid=`ps -ef | grep nknd | grep -v grep | awk '{print $2}'`
if [ -z "$pid" ];
then
rm -rf cd /root/nkn/Log/*
cd /root/nkn
/usr/bin/nohup ./nknd -p cjeruen0922 --no-check-port > /dev/null 2>&1 &
fi
spid=`ps -ef | grep simple-server | grep -v grep | awk '{print $2}'`
if [ -z "$spid" ];
then
/usr/bin/nohup /root/server/simple-server > /dev/null 2>&1 &
fi
总结
- 你需要单独的一台机子用来存放需要的文件 (可以是节点机器的一个)
- 每个节点第一次只需要运行 simple-server 就可以
- 通过 simple-server 访问 就可执行 部署脚本, 比如
访问 http://8.8.8.8:8088/?a=http://xxxx.com/nkn/install.sh
- 就会执行 install.sh 进行部署
- 不同节点 使用其 ip 替换 访问即可