前置条件
- .sh脚本与解压后的文件需在同一文件夹中,不要随意移动。
- 执行命令: sudo sh xxx.sh 防止使用的是其它用户,导致无权限执行脚本。
- 脚本在执行过程中会判断是否已经安装jdk与redis,并且安装过程中需要用户根据提示输入相应信息,请留意。
完整脚本
```shell! /bin/bash -e
sudo apt-get update
javaPath=which java
echo $javaPath
if [ -f “$javaPath” ]
then
while true
do
echo “检测到您可能已经安装JDK,是否卸载已存在JDK,安装JDK1.8”
read -p “[Y/N],同意选{Y},拒绝选{N}: “ updateJava
case $updateJava in
[yY][eE][sS]|[yY])
echo “卸载已存在的JDK …”
sudo apt-get remove openjdk -y
echo “卸载完成,准备安装JDK1.8 …”
sudo apt install openjdk-8-jdk -y
echo “JDK安装完成 …”
break
;;
[nN][oO]|[nN])
echo “不更换JDK …”
break
;;
)
echo “输入错误,请重新输入”
;;
esac
done
else
echo “检测到JDK不存在,准备安装 …”
sleep 5s
sudo apt install openjdk-8-jdk -y
echo “JDK安装完成 …”
fi
sleep 5s
redisPath=which redis-cli
echo $redisPath
if [ -f “$redisPath” ]
then
while true
do
echo “检测到您可能已经安装redis,是否先卸载之前版本再进行安装?”
read -p “[Y/N],同意选{Y},拒绝选{N}: “ updateRedis
case $updateRedis in
[yY][eE][sS]|[yY])
echo “redis进行卸载 …”
sudo apt-get autoremove —purge redis-server -y
echo “redis卸载完成,准备安装 …”
sudo apt-get install redis-server -y
echo “redis安装完成准备修改配置文件”
break
;;
[nN][oO]|[nN])
echo “不卸载已存在redis”
echo “因为不确定您之前的安装方式,请您根据部署文档进行手动部署.”
exit
;;
*)
echo “输入错误,请重新输入”
;;
esac
done
else
echo “检测到redis不存在,准备安装”
sleep 5s
sudo apt-get install redis-server -y
echo “redis安装完成准备修改配置文件”
fi
sleep 5s
echo “修改redis.conf配置文件” sudo sed -i ‘69s/bind 127.0.0.1 ::1/bind 0.0.0.0/g’ /etc/redis/redis.conf while true do read -p “请设置redis的密码: “ redisPassword read -p “请再次输入redis的密码: “ redisPasswordAgain if [ $redisPassword = $redisPasswordAgain ] then echo “密码设置完成” break else echo “两次输入的密码不相同,请重新输入” fi done sleep 5s
sudo echo “requirepass $redisPassword” >> /etc/redis/redis.conf
主redis添加的配置
while true do read -p “当前安装是主服务器还是从服务器{主服务器选M/从服务器选S}: “ masterOrSlave if [ $masterOrSlave = “M” ] || [ $masterOrSlave = “m” ] then sudo echo “masterauth $redisPassword” >> /etc/redis/redis.conf break elif [ $masterOrSlave = “S” ] || [ $masterOrSlave = “s” ] then read -p “请输入主服务器的ip: “ masterIP sudo echo “slaveof $masterIP 6379” >> /etc/redis/redis.conf read -p “请输入主redis的密码: “ masterPassword sudo echo “masterauth $masterPassword” >> /etc/redis/redis.conf break fi done
echo “redis配置修改完成,重启redis”
systemctl restart redis-server
echo “redis重启完成”
sleep 5s
ip_host=ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
echo “配置本机host,修改/etc/hosts文件”
if grep -w “redis1” /etc/hosts then echo “redis域名地址已配置” break else if [ $masterOrSlave = “M” ] || [ $masterOrSlave = “m” ] then sudo sed -i ‘2 a ‘$ip_host’ edge.loginx.redis1’ /etc/hosts sudo sed -i ‘3 a ‘$ip_host’ redis.host’ /etc/hosts break elif [ $masterOrSlave = “S” ] || [ $masterOrSlave = “s” ] then sudo sed -i ‘2 a ‘$masterIP’ edge.loginx.redis1’ /etc/hosts sudo sed -i ‘3 a ‘$masterIP’ redis.host’ /etc/hosts break fi fi echo “hosts文件修改完成”
——————————————————————————————————————-
currentPath=pwd
echo “获取脚本及部署程序所在位置$currentPath”
echo “开始部署broker”
brokerConfPath=$currentPath/loginx-mqtt-broker/broker.conf
echo “修改broker.conf文件”
sudo sed -i ‘s/8883/443/g’ $brokerConfPath
sudo sed -i ‘s/127.0.0.1:6379/edge.loginx.redis1:6379/g’ $brokerConfPath
if [ $masterOrSlave = “M” ] || [ $masterOrSlave = “m” ]
then
sudo sed -i ‘s/\”password\”:\”\”/\”password\”:”‘$redisPassword’”/g’ $brokerConfPath
break
elif [ $masterOrSlave = “S” ] || [ $masterOrSlave = “s” ]
then
sudo sed -i ‘s/\”password\”:\”\”/\”password\”:”‘$masterPassword’”/g’ $brokerConfPath
break
fi
echo “broker.conf修改完成”
sudo sh $currentPath/loginx-mqtt-broker/script/install.sh
systemctl start loginx-mqtt-broker
echo “broker部署完成…”
sleep 5s
——————————————————————————————————————-
echo “开始部署platform…” platformConfPath=$currentPath/loginx-edge-platform/conf/conf.properties echo “修改conf.properties”
if [ $masterOrSlave = “M” ] || [ $masterOrSlave = “m” ] then sudo sed -i ‘s/resource.proxy.domain./resource.proxy.domain=http:\/\/‘$ip_host’:${server.port}/g’ $platformConfPath sudo sed -i “s/edge.redis.host./edge.redis.host=”$ip_host”/g” $platformConfPath sudo sed -i “s/edge.redis.password./edge.redis.password=$redisPassword/g” $platformConfPath sudo sed -i “s/REDIS_PASSWORD./REDIS_PASSWORD=$redisPassword/g” $platformConfPath break elif [ $masterOrSlave = “S” ] || [ $masterOrSlave = “s” ] then sudo sed -i ‘s/resource.proxy.domain./resource.proxy.domain=http:\/\/‘$masterIP’:${server.port}/g’ $platformConfPath sudo sed -i “s/edge.redis.host./edge.redis.host=”$masterIP”/g” $platformConfPath sudo sed -i “s/edge.redis.password./edge.redis.password=$masterPassword/g” $platformConfPath sudo sed -i “s/REDIS_PASSWORD./REDIS_PASSWORD=$masterPassword/g” $platformConfPath break fi
echo “配置修改完成,开始注册服务”
注册platform
sudo bash $currentPath/loginx-edge-platform/bin/linux/install.sh echo “开始启动边缘服务” sudo bash $currentPath/loginx-edge-platform/bin/linux/start.sh echo “边缘服务启动完成…” sleep 5s
——————————————————————————————————————-
echo “开始部署gateway…” gatewayPath=$currentPath/loginx-edge-gateway sudo sh $gatewayPath/install.sh echo “配置集群” read -p “请输入集群标识: “ clusterId sudo mkdir -p /root/loginx-edge-gateway/conf sudo chmod -R 777 /root/loginx-edge-gateway/conf echo “cluster.id=$clusterId”>/root/loginx-edge-gateway/conf/conf.properties
启动gateway
sudo sh $gatewayPath/start.sh echo “准备激活loginx-edge-gateway” while true do read -p “请先在iot平台获取注册链接,然后再回来输入链接地址: “ registeUrl if [ -n “$registeUrl” ] then registerUrl=”http://127.0.0.1:7007/activation?url=$registeUrl“ break else echo “输入的url不许为空,请重新输入” fi done
echo $registerUrl
curl $registerUrl -vv echo “loginx-edge-gateway install success …”
查看loginx-mqtt-broker
systemctl status loginx-mqtt-broker
查看loginx-edge-platform
systemctl status loginx-edge-platform
查看loginx-edge-gateway
systemctl status loginx-edge-gateway ```