提交 9396cdfd authored 作者: 朱工junye's avatar 朱工junye

最新的一键脚本 。

上级 2bef1259
#!/usr/bin/env bash
#脚本的重要说明:运行这个脚本需要使用的命令source create_ipfs_?.sh 要用source才行。
secret_master='c14aba9e8f4f16f8bdad7c4e11033dd543ed68e0a380d181629d035275090ddf' ##变量=号后面用'__'号括起来是转字符串,如果后面用``这种符号括起来就是传命令。加入到某个ipfs集群需要用到的secret值,群里的节点机都需要统一用一个secret值。这个值来自1.102真机HDD4T机器
onepeerID='12D3KooWHt6khHkDSXpaw6ChwrwUg2Tg5E4M1KKh9CX5B2UT9tGW' #ipfs config show | grep "PeerID" #首先在1.102第一台主节点机运行得到PeerID值,然后集群所有节点都要用到这个peerID
userdir=`who|awk '{print $1}'|awk 'NR==1'`
local_ip=`ip addr | grep 'inet' | grep -v 'inet6\|127.0.0.1' | grep -v grep | awk -F '/' '{print $1}' | awk '{print $2}' | head -1`
echo -e "\e[40;31m 本机IP为:${local_ip} \e[0m" #显示红色字体
##为新机器更新为中国时区
echo Asia/Shanghai > /etc/timezone
rm -f /etc/localtime
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo -e "\e[40;31m 时区现在为`date -R` \e[0m" #显示红色字体
cd /home/${userdir}
echo -e "\e[40;31m 获取准确的普通用户目录 \e[0m" #显示红色字体
#echo -e "\e[40;34m 这个是显示蓝色字体的命令 \e[0m" #显示蓝色字体
pwd #显示出用了变量后的准确路径。
apt update
apt upgrade -y
apt install lrzsz #安装上传工具,可有可无的。
echo -e "\e[40;31m 下载新的go包 \e[0m"
#wget https://dl.google.com/go/go1.18.3.linux-amd64.tar.gz
wget https://dl.google.com/go/go1.17.8.linux-amd64.tar.gz
echo "=========下载到的go软件包版本========"
ls go1.*
sudo tar -zxvf go1.17.8.linux-amd64.tar.gz -C /usr/local >/dev/null 2>&1
ls /usr/local/go
echo "=========解压go包完成========"
cd /root
sudo mkdir -p go/{src,pkg,bin}
sudo chmod u+x go/{src,pkg,bin}
echo "=========新建好root/go目录========"
if grep "/usr/local/go/bin" /home/${userdir}/.profile
then
echo "/usr/local/go/bin 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export PATH=$PATH:/usr/local/go/bin' >> /home/${userdir}/.profile
fi
if grep "export GOROOT" /home/${userdir}/.profile
then
echo "GOROOT=/usr/local/go 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export GOROOT=/usr/local/go' >> /home/${userdir}/.profile
fi
if grep "export GOPATH" /home/${userdir}/.profile
then
echo "GOPATH=$HOME/go 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export GOPATH=$HOME/go' >> /home/${userdir}/.profile
fi
if grep "HOME/go/bin" /home/${userdir}/.profile
then
echo "export PATH 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export PATH=$PATH:$HOME/go/bin' >> /home/${userdir}/.profile
fi
<<AAA #用了上面的if智能判断后已经不需要以下四行的固定添加语句了。
echo 'export PATH=$PATH:/usr/local/go/bin' >> /home/${userdir}/.profile
echo 'export GOROOT=/usr/local/go' >> /home/${userdir}/.profile
echo 'export GOPATH=$HOME/go' >> /home/${userdir}/.profile
echo 'export PATH=$PATH:$HOME/go/bin' >> /home/${userdir}/.profile
AAA
sleep 1
echo -e "\e[40;31m 运行source普通用户目录下的.profile \e[0m"
source /home/${userdir}/.profile
echo "=========看到go的版本与go配置信息========"
go version
go env
sleep 1
if grep "/usr/local/go/bin" /root/.bashrc
then
echo "/usr/local/go/bin 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export PATH=$PATH:/usr/local/go/bin' >> /root/.bashrc
fi
if grep "export GOROOT" /root/.bashrc
then
echo "GOROOT=/usr/local/go 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export GOROOT=/usr/local/go' >> /root/.bashrc
fi
if grep "export GOPATH" /root/.bashrc
then
echo "GOPATH=$HOME/go 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export GOPATH=$HOME/go' >> /root/.bashrc
fi
if grep "HOME/go/bin" /root/.bashrc
then
echo "export PATH 已经存在不用写"
else
echo '之前没有,需要添加语句'
echo 'export PATH=$PATH:$HOME/go/bin' >> /root/.bashrc
fi
echo -e "\e[40;31m 运行source命令激活root/.profile \e[0m"
source /root/.bashrc
echo "=========Go环境部署与配置完成。========"
sleep 1
echo "=========安装工具包。========"
sudo apt-get install git
sudo apt install gcc -y #加了-y不用再手动y
sudo apt install make
echo "=========下载go-ipfs源码。========"
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go get -u github.com/ipfs/go-ipfs
#cd /root/go/pkg/mod/github.com/ipfs/go-ipfs@v0.12.0/ 以前0.12旧版的路径。
cd /root/go/pkg/mod/github.com/ipfs/go-ipfs@v0.* ##暂时版本是v0.14.0/为最新,这里用了*号通配符号进入下级目录唯一目录。
##上面这一行命令的地址有待研究,会变的,不同时间下载的版本最后的地址会变。go-ipfs源码将会下载到~/go/pkg/mod/---------
chmod 777 bin/check_go_version
chmod 777 plugin/loader/preload.sh
make install
ipfs version
echo "=========如出ipfs version 则部署成功========"
echo -e "\e[40;34m 禁用go的MOD \e[0m"
go env -w GO111MODULE=off
echo -e "\e[40;34m ipfs节点进行初始化 \e[0m"
ipfs init #初始化ipfs
sleep 1
ipfs init
echo -e "\e[40;34m /root/.ipfs/目录下的东西 \e[0m"
ls -l /root/.ipfs/
sed -i -e "s/127.0.0.1/${local_ip}/g" /root/.ipfs/config
echo -e "\e[40;34m 把/root/.ipfs/config的两个本地IP改为实际IP了 \e[0m"
cat /root/.ipfs/config |grep ${local_ip}
ipfs bootstrap rm --all
/root/go/bin/ipfs daemon & #启动ipfs daemon
sleep 1
echo "看到上面提示Daemon is ready,表示ipfs daemon已经可以正常启动了,效果如上"
echo "`ps -ef|grep ipfs`" ##看到启动的有关ipfs的所有进程。
ps -ef|grep 'ipfs*' |awk '{print $2}'|xargs kill -9
echo "===已经关掉ipfs daemon进程了==="
##下面两行用了一个变量,按官方出来的页面提示命令输入
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://'${local_ip}':5001", "http://localhost:3000", "http://127.0.0.1:5001", "https://webui.ipfs.io"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]'
echo "===下面准备创建私有IPFS专用网络==="
cd /home/${userdir} #切换到普通用户目录
#go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen #主节点机才要运行的命令
#ipfs-swarm-key-gen > root/.ipfs/swarm.key #主节点机才要运行的命令
#cp /root/.ipfs/swarm.key /home/${userdir}/swarm.key #主节点机运行,拷贝好放在那方便别的节点下载。
scp aipsb@192.168.1.102:/home/aipsb/swarm.key /root/.ipfs/swarm.key #在主节点机用上两行命令得到的swarm.key密码文件。
ls -l /root/.ipfs/swarm.key #刚拷进来
IPFS_PATH=/root/.ipfs ipfs bootstrap add /ip4/192.168.1.102/tcp/4001/ipfs/${onepeerID}
export LIBP2P_FORCE_PNET=1 && ipfs daemon &
<<AAA
docker --version >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "已安装docker"
else
echo "正在安装docker-----------"
apt install docker.io -y >/dev/null 2>&1
echo "=======安装完成=========="
sleep 5
fi
cur_dir=$(cd "$(dirname "$0")";pwd)
cd $cur_dir
IMAGE_NAME='mysql:8.0.13'
DOCKER_NAME='master'
MYSQL_PASSWORD='123456'
PORT='4306'
script='user_mysql.sh'
confdir='/usr/local/master/conf'
datadir='/usr/local/master/data'
#创建映射目录
[ ! -d $confdir ] && mkdir -p $confdir
[ ! -d $datadir ] && mkdir -p $datadir
[ ! -f $confdir/my.cnf ] && touch $confdir/my.cnf
#创建MySQL容器
create_mysql () {
docker pull $IMAGE_NAME >/dev/null 2>&1
docker run --name $DOCKER_NAME -p $PORT:3306 --restart always -v $confdir:/etc/mysql/conf.d/ -v $datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=$MYSQL_PASSWORD -d $IMAGE_NAME
}
#制作创建MySQL用户脚本
create_script () {
echo '#!/usr/bin/env bash' >${script}
echo "mysql -uroot -p$MYSQL_PASSWORD <<EOF" >>${script}
echo "create user '$DOCKER_NAME'@'%' identified with mysql_native_password by '$MYSQL_PASSWORD';" >>${script}
echo "grant replication slave,replication client on *.* TO '$DOCKER_NAME'@'%';" >>${script}
echo 'flush privileges;' >>${script}
echo 'EOF' >>${script}
}
#配置MySQL数据库
config_databases () {
create_script
chmod +x ${script}
docker cp ${script} $DOCKER_NAME:/
echo "正在复制脚本----------------------"
sleep 15
docker exec -it $DOCKER_NAME bash -c " ./${script}; "
}
#主函数
config_mysql () {
cat >$confdir/my.cnf <<EOF
[mysqld]
# master01主服务器01唯一ID
server-id=$PORT
# 启用二进制日志
log-bin=mysql-bin
#从库的中继日志,主库日志写到中继日志,中继日志再重做到从库
# relay-log=myslql-relay-bin
# binlog保留时间7天
expire_logs_days=7
#指定不同步库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
EOF
}
#重启docker容器使主函数生效
docker restart $DOCKER_NAME
main () {
echo "=========正在创建MySQL容器========"
create_mysql
echo "========正在配置MySQL数据库======="
config_databases
echo "========正在导入数据库配置========"
config_mysql
echo "=================================="
echo -e "\033[40;36m success \033[0m"
echo "=================================="
}
main $@
AAA
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论