Centos7部署Sonic前后端和Agent 端

前言

1、Sonic介绍

  • Sonic是一款开源、支持分布式部署、在线自动化测试的私有云真机平台,Sonic官网地址

功能特性:
在这里插入图片描述
Sonic架构:
在这里插入图片描述

2、准备工作

①准备两台设备,并安装Centos7系统,设备简称:设备1(Sonic Server)设备2(Sonic Agent)
系统版本(命令:cat /etc/centos-release):CentOS Linux release 7.7.1908 (Core)

②准备一台Android设备,并开启USB调试
③准备一台操作电脑,并安装FinalShell工具


一、Sonic Server 部署

1、部署Server端

①通过FinalShell远程连接设备1,并进入/home目录
在这里插入图片描述

②新建SonicServer.sh文件
在这里插入图片描述

③并添加以下内容,保存

需要修改的地方:

  • sonicversion=“v2.6.1” # 软件版本,通过官网获取最新版本
  • ip=“192.168.100.235” # sonic-server服务器地址
  • new_passwd=“sonicwan654” # MySQL密码,可自行修改
  • db=“sonic” # sonic-server库名
#!/bin/bash

# 封装需要修改的变量
initialize_variables(){
 	#软件版本,新版本可去github获取,https://github.com/SonicCloudOrg/sonic-server/releases
	sonicversion="v2.6.1"
	#sonic-server服务器地址
	ip="192.168.100.235"
	#MySQL新密码,默认密码sonicwan654,用户可自定义修改
	new_passwd="sonicwan654"
	#sonic-server库名
	db="sonic"
}

# 安装Docker
InstallDocker(){
	#1.向系统添加Docker CE软件仓库的源地址,如该源无法使用可以替换阿里云Docker CE软件仓库地址
	# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
	#2.生成并更新系统中的软件包缓存
	yum makecache fast
	#3.安装docker
	yum install -y docker-ce
	#4.启动docker
	systemctl start docker.service
	#5.设置Docker开机自启
	systemctl enable docker.service
	#6.验证Docker是否安装成功
	if docker version &> /dev/null; then
		echo "Docker安装成功"
	else
		echo "Docker安装失败,请检查配置是否有误"
		exit 1
	fi
}

#安装docker-compose
InstallDockercompose(){
	#1.安装所需软件包
	yum install -y curl
	#2.下载并安装Docker Compose, 加速器无法使用时,请去掉https://ghproxy.com/部分,直接在github下载
	sudo curl -L "https://ghproxy.com/https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
	#3.赋予执行权限
	chmod +x /usr/local/bin/docker-compose
	#4.验证docker-compose是否安装成功
	if docker-compose -v &> /dev/null; then
		echo "docker-compose安装成功"
	else
		echo "docker-compose安装失败,请检查配置是否有误"
		exit 1
	fi
}

#安装mysql服务端
InstallMysql(){
	#查询是否已经安装Mariadb,如果已经安装,则执行单独卸载有关软件包
	mariadb=$(rpm -qa | grep mariadb)
	if [ $mariadb ]; then
		rpm -e $mariadb --nodeps
	fi
	#安装wget工具和所需的库文件,以确保 MySQL 能够正常运行
	yum -y install wget
	yum -y install libaio
	#创建文件夹并下载 MySQL 8 的 RPM 包文件
	mkdir -p ./mysql
	wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar -O ./mysql/mysql.tar
	#进入目录,解压文件
	cd mysql
	tar -xvf mysql.tar
	#查询压缩包中相应的RPM软件包文件名
	common=`find . -name "mysql-community-common*"`
	libs=`find . -name "mysql-community-libs-8*"`
	client=`find . -name "mysql-community-client*"`
	server=`find . -name "mysql-community-server*"`
	#以顺序安装MySQL相应的共享库、客户端、服务组件,其中--force --nodeps命令行选项可确保成功安装MySQL
	rpm -ivh $common
	rpm -ivh $libs
	rpm -ivh $client
	rpm -ivh $server --force --nodeps
	#初始化 MySQL 数据库
	mysqld --initialize
	#修改MySQL数据库文件夹权限为mysql用户
	chown mysql:mysql /var/lib/mysql -R
	#启动 MySQL 服务
	systemctl start mysqld.service
	#将 MySQL 服务设置为开机启动状态
	systemctl enable mysqld
	#返回上级目录,结束安装过程
	cd ../
}

#安装Iptables,并配置防火墙规则
InstallIptables(){
	#停止、禁用并屏蔽 firewalld 服务
	systemctl stop firewalld.service
	systemctl disable firewalld.service
	systemctl mask firewalld.service
	#安装 iptables-services 程序包
	yum -y install iptables-services
	systemctl enable iptables
	systemctl start iptables
	#删除阻塞预设端口的规则
	iptables="/etc/sysconfig/iptables"
	sed -i '/COMMIT/d' "$iptables"
	sed -i '/--dport 80 -j/d' "$iptables"
	sed -i '/--dport 3306/d' "$iptables"
	sed -i '/--dport 443/d' "$iptables"
	sed -i '/--dport 3000/d' "$iptables"
	sed -i '/--dport 9090/d' "$iptables"
	sed -i '/--dport 10389/d' "$iptables"
	sed -i '/--dport 8094/d' "$iptables"
	sed -i '/--dport 8095/d' "$iptables"
	sed -i '/--dport 7777/d' "$iptables"
	sed -i '/INPUT -j REJECT/d' "$iptables"
	sed -i '/FORWARD -j REJECT/d' "$iptables"
	#增加需要放行的端口规则
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 10389 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 8094 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 8095 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT">>$iptables
	echo "-A INPUT -j REJECT --reject-with icmp-host-prohibited">>$iptables
	echo "-A FORWARD -j REJECT --reject-with icmp-host-prohibited">>$iptables
	echo "COMMIT">>$iptables
	#重新启动 iptables 服务,并将其注册到系统初始化服务列表中
	systemctl restart iptables.service
	systemctl enable iptables.service
}

#配置MySQL数据库
Configure_mysql(){
	#获取默认密码
	initial_passwd=$(cat /var/log/mysqld.log | grep password)
	obtain_passwd=${initial_passwd#*localhost: } #冒号后面有个空格,需要注意
	#连接数据库并修改密码
	mysql -uroot -p$obtain_passwd --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$new_passwd';"
	#设置远程连接
	mysql -uroot -p$new_passwd --connect-expired-password -e "create user 'root'@'%' identified with mysql_native_password by '$new_passwd';grant all privileges on *.* to 'root'@'%' with grant option;ALTER USER 'root'@'localhost' IDENTIFIED BY '$new_passwd' PASSWORD EXPIRE NEVER;flush privileges;"
	#新建数据库
	mysql -uroot -p$new_passwd --connect-expired-password -e "create database $db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
}

#部署前后端
InstallServer(){
	#1.创建sonicserver文件夹
	mkdir sonicserver
	#2.进入sonicserver文件夹
	cd sonicserver
	#3.下载sonic服务端包,加速器无法使用时,请去掉https://ghproxy.com/部分,直接在github下载
	wget https://ghproxy.com/https://github.com/SonicCloudOrg/sonic-server/releases/download/$sonicversion/sonic-server-$sonicversion.zip
	#4.安装解压工具,并解压文件
	yum install -y unzip
	unzip sonic-server-$sonicversion.zip
	#5.更改.env 中的信息,以下信息官网中有详细说明。如需修改其他信息,请查看官网文档。
	#Service Config
	sed -i "s/SONIC_SERVER_HOST=.*/SONIC_SERVER_HOST=$ip/" .env
	sed -i "s/SONIC_SERVER_PORT=.*/SONIC_SERVER_PORT=3000/" .env
	sed -i "s/SONIC_EUREKA_USERNAME=.*/SONIC_EUREKA_USERNAME=sonicadmin/" .env
	sed -i "s/SONIC_EUREKA_PASSWORD=.*/SONIC_EUREKA_PASSWORD=sonicwan987/" .env
	#MySQL Config
	sed -i "s/MYSQL_HOST=.*/MYSQL_HOST=$ip/" .env
	sed -i "s/MYSQL_DATABASE=.*/MYSQL_DATABASE=$db/" .env
	sed -i "s/MYSQL_PASSWORD=.*/MYSQL_PASSWORD=$new_passwd/" .env
	#User Config
	sed -i "s/SECRET_KEY=.*/SECRET_KEY=sonickeys/" .env
	sed -i "s#LDAP_URL=.*#LDAP_URL=ldap://$ip:10389#" .env
	#6.重启docker,保证服务正常
	service docker restart
	#7.部署
	docker-compose up -d
}

#判断网络状态
if ! ping -c3 www.baidu.com &>/dev/null; then
	echo "无法连接互联网,请检查网络!"
	exit 1
fi

initialize_variables
InstallDocker
InstallDockercompose
InstallMysql
InstallIptables
Configure_mysql
InstallServer

④赋777权限,并执行脚本

chmod 777 SonicServer.sh
./SonicServer.sh

脚本执行完成后,前后端部署就完成了(因 Eureka 心跳机制,刚启动完毕微服务间互相访问需要 3~5 分钟,请耐心等候)打开浏览器访问 http://服务器IP地址/:3000)
在这里插入图片描述

2、获取Sonic Agent key

①注册账号
在这里插入图片描述

②新增Agent

  • 注册成功后,点击设备中心-Agent中心,点击新增Agent
  • 填写名称,确定
    在这里插入图片描述

③复制Agent Key

  • 点击复制
    在这里插入图片描述

二、Sonic Agent部署

1、部署Agent端

①通过FinalShell远程连接设备2,并进入/home目录
在这里插入图片描述

②新建SonicAgent.sh文件
在这里插入图片描述
③并添加以下内容,保存

需要修改的地方:

  • jdk=“amazon-corretto-17-x64-linux-jdk.tar.gz” # 按照官方要求安装指定版本
  • AgentVersion=“v2.6.1” # Agent版本,通过官网获取新版本
  • AgentHost=“192.168.100.120” # AgentIP地址
  • AgentKey=“asdcvdfvfd-vdavds-25488-555” # AgentKey,SonicServer服务端获取
  • SonicServerHost=“192.168.100.235” # SonicServer地址
  • SonicServerPort=“3000” # SonicServer端口
#!/bin/bash

# 封装需要修改的变量
initialize_variables(){
	#JDK安装包版本,按照SONIC官方要求下载指定版本,官方地址:https://sonic-cloud.cn/deploy/agent-deploy.html
	jdk="amazon-corretto-17-x64-linux-jdk.tar.gz"
	#Agent版本,官方地址:https://sonic-cloud.cn/deploy/agent-deploy.html 获取新的版本号
	AgentVersion="v2.6.1"
	#AgentIP地址
	AgentHost="192.168.100.120"
	#AgentKey,SonicServer服务端获取
	AgentKey="asdcvdfvfd-vdavds-25488-555"
	# SonicServer地址
	SonicServerHost="192.168.100.235"
	# SonicServer端口
	SonicServerPort="3000"
}

# 安装JDK并配置环境变量
InstallJDK(){
	#1.进入目录
	cd /usr/local/
	#2.下载JDK
	wget https://corretto.aws/downloads/latest/$jdk
	#3.解压文件
	tar -zxvf $jdk
	#4.获取完整文件夹名称,并修改名称
	amazon=$(find . -maxdepth 1 -type d -name "amazon-corretto*")
	mv $amazon java
	#5.配置jdk环境变量
	echo "" >> /etc/profile
	echo "#JAVA_HOME" >> /etc/profile
	echo "export JAVA_HOME=/usr/local/java" >> /etc/profile
	echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
	#6.source生效
	source /etc/profile
	#7.验证JDK是否安装成功
	if java -version &> /dev/null; then
		echo "JDK安装成功"
	else
		echo "JDK安装失败,请检查配置是否有误"
		exit 1
	fi
}

#下载Agent端
InstallAgent(){
	#1.新建文件夹,并进入该目录下下载
	mkdir /home/sonicagent
	cd /home/sonicagent
	#加速链接,如果失效,请去官网下载新的包https://sonic-cloud.cn/deploy/agent-deploy.html
	wget https://ghproxy.com/https://github.com/SonicCloudOrg/sonic-agent/releases/download/$AgentVersion/sonic-agent-$AgentVersion-linux_x86_64.zip
	#2.解压文件
	yum install -y unzip
	unzip sonic-agent-$AgentVersion-linux_x86_64.zip
	#3.配置文件修改
	path="/home/sonicagent/config/application-sonic-agent.yml"
	sed -i "/^\s*agent:/,/^  server:/s/host: .*/host: $AgentHost/" $path
	sed -i "s/key: .*/key: $AgentKey/" $path
	sed -i "/^\s*server:/,/^  agent:/s/host: .*/host: $SonicServerHost/" $path
	sed -i "/^\s*server:/,/^  agent:/s/port: .*/port: $SonicServerPort/" $path
}

#关闭firewalld防火墙
firewalld(){
	#1.停止服务、禁用开机自启、屏蔽服务
	systemctl stop firewalld.service
	systemctl disable firewalld.service
	systemctl mask firewalld.service
	#2.解除服务屏蔽、启用开机自启、启动服务
	#systemctl unmask firewalld.service
	#systemctl enable firewalld.service
	#systemctl start firewalld.service
	reboot
}

#判断网络状态
if ! ping -c3 www.baidu.com &>/dev/null; then
	echo "无法连接互联网,请检查网络!"
	exit 1
fi

initialize_variables
InstallJDK
InstallAgent
firewalld

④赋777权限,并执行脚本

chmod 777 SonicServer.sh
./SonicAgent.sh

三、启动服务

1、Sonic Server服务启动

  • 重启服务器后,web端登录页面提示"系统出错了!“或"后台准备中…请稍后…”,该问题是Sonic Server相关容器未自启动,需要手动启动(如运行失败,重启服务器再运行即可
  • ①先查看本地所有容器,包含未启动的
 docker ps -a

在这里插入图片描述

  • ②启动容器
docker start 2ee56951d25a

在这里插入图片描述
③等待3分钟后,刷新web端,即可恢复正常。

2、Sonic Agent服务启动

cd /home/sonicAgent
java -Dfile.encoding=utf-8 -jar sonic-agent-linux-x86_64.jar

在这里插入图片描述


四、连接手机

1、连接手机

  • 手机通过USB线连接Sonic Agent(手机需要开启USB调试)

  • 登录Sonic Server后台,点击设备中心-Agent中心,查看Agent是否在线
    在这里插入图片描述

进入设备中心,查看设备
在这里插入图片描述


五、常见问题(Q&A)

Q1: 需要开放哪些端口?
A1: Sonic Server端:3306、3000、9090、10389、8094、8095 / Sonic Agent端:7777

Q2: Sonic Agent端离线?
A2: 检查服务是否有启动,如未启动,者启动服务(启动方法查看:Sonic Agent服务启动)

Q3: Sonic Server端和Sonic Agent端是否可以部署到同一台设备上?
A3: 可以

Q4: Sonic Server端和Sonic Agent端是否必须在同一个局域网中?
A4: 不一定,也可以在不同局域网中,但前提Sonic Agent端必须能ping通Sonic Server端

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
若依是一个基于Spring Boot和Vue.js的前后端分离开发平台。在CentOS上部署若依前后端需要以下步骤: 1. 安装和配置Java环境:首先需要在CentOS上安装Java Runtime Environment(JRE)或者Java Development Kit(JDK)。可以通过yum命令安装OpenJDK,然后设置JAVA_HOME环境变量。 2. 安装和配置数据库:若依使用的是MySQL数据库,可以通过yum命令安装MySQL。安装完成后,配置MySQL的用户名、密码和权限。 3. 下载和配置若依:可以从若依的官网上下载最新版本的若依。下载完成后,解压文件并配置相关的配置文件,如数据库连接配置口设置等。 4. 编译和打包前代码:进入到若依的前项目目录,使用npm命令安装相关依赖。然后使用npm run build命令编译和打包前代码。将生成的打包文件拷贝到后项目的静态资源目录中。 5. 编译和部署代码:进入到若依的后项目目录,使用maven命令编译项目代码。编译完成后,将生成的jar包拷贝到服务器的指定目录。 6. 启动若依:在服务器上执行java -jar命令来启动若依。可以使用nohup命令将其放在后台运行,并使用日志记录启动日志。 7. 配置反向代理:可以使用Nginx等反向代理服务器将若依的前请求代理到后服务,同时提供静态资源访问。 8. 配置防火墙和安全策略:可以根据需要配置CentOS的防火墙,限制访问若依的口和IP。同时可以配置HTTPS证书来加密网络传输。 9. 监控和优化:可以使用监控工具如Prometheus和Grafana来监控若依的性能和状态。根据监控结果进行优化,如调整数据库连接池大小、增加缓存等。 以上是在CentOS上部署若依前后端的大致步骤,可根据具体需求和情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值