commit 51eb1a38fdc1a23d958fcff919f7c01146fced6f Author: huangfeng Date: Tue Jan 16 09:21:18 2024 +0800 new: mqtt安装脚本 diff --git a/mqtt/mqtt安装部署手册.docx b/mqtt/mqtt安装部署手册.docx new file mode 100644 index 0000000..e807d22 Binary files /dev/null and b/mqtt/mqtt安装部署手册.docx differ diff --git a/mqtt/package/checkMqtt.sh b/mqtt/package/checkMqtt.sh new file mode 100644 index 0000000..92c6ce0 --- /dev/null +++ b/mqtt/package/checkMqtt.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +pidAna=`ps -ef |grep mqtt-1.0.0 | grep -v 'grep'| awk '{print $2}'` + +err=0 + +if [ ! $pidAna ]; then + echo "mqtt-1.0.0 is down" + err=1 +else + echo "mqtt-1.0.0 is running" +fi + +if [ $err == 0 ]; then + touch BASE_DIR/RUNNING.lock +else + if [ -e "BASE_DIR/RUNNING.lock" ]; then + BASE_DIR/startMqtt.sh + fi +fi diff --git a/mqtt/package/init.sql b/mqtt/package/init.sql new file mode 100644 index 0000000..7c335ee --- /dev/null +++ b/mqtt/package/init.sql @@ -0,0 +1,108 @@ +-- +-- Table structure for table `sync_tables_info` +-- +DROP TABLE IF EXISTS sync_tables_info; +CREATE TABLE sync_tables_info ( + client_id int(10) unsigned NOT NULL, + `table_name` varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + `sql` varchar(2048) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + devid_field_name varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + outer_devid_fname varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + field_name varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + field_type tinyint(4) NOT NULL DEFAULT '1' COMMENT '1: 整数 2: 字符串 3: 日期 4: 浮点数', + update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (client_id,`table_name`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `sync_fields_info` +-- +DROP TABLE IF EXISTS sync_fields_info; +CREATE TABLE sync_fields_info ( + id int(10) unsigned NOT NULL AUTO_INCREMENT, + client_id int(10) unsigned NOT NULL, + `table_name` varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + field_name varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + field_type tinyint(3) unsigned NOT NULL DEFAULT '0', + dest_field_name varchar(128) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + sensorindex int(11) NOT NULL, + PRIMARY KEY (id) USING BTREE, + KEY `fields` (client_id,`table_name`,field_name) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `sync_records` +-- +DROP TABLE IF EXISTS sync_records; +CREATE TABLE sync_records ( + client_id int(10) unsigned NOT NULL, + `table_name` varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + devid_val varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + field_val1 bigint(20) unsigned DEFAULT '0', + field_val2 datetime DEFAULT '2000-01-01 01:00:00', + update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (client_id,`table_name`,devid_val) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +-- ---------------------------- +-- Records of sync_tables_info +-- ---------------------------- +INSERT INTO sync_tables_info VALUES (10,'data_eaif_h','','eqmid','sensorid','capturetime',3,'2023-12-25 09:13:25'); +INSERT INTO sync_tables_info VALUES (10,'data_eia_h','','eqmid','sensorid','d_time',3,'2023-12-25 09:13:25'); +INSERT INTO sync_tables_info VALUES (10,'data_epa_h','','eqmid','sensorid','d_time',3,'2023-12-25 09:13:25'); +INSERT INTO sync_tables_info VALUES (10,'data_microclimate_h','','eqmid','sensorid','d_time',3,'2023-12-25 09:13:25'); +INSERT INTO sync_tables_info VALUES (10,'data_pd_h','','eqmid','sensorid','d_time',3,'2023-12-25 09:13:25'); +INSERT INTO sync_tables_info VALUES (10,'data_scur_h','','eqmid','sensorid','d_time',3,'2023-12-25 09:13:25'); +INSERT INTO sync_tables_info VALUES (10,'data_sf6_h','','eqmid','sensorid','d_time',3,'2023-12-25 09:13:25'); + +-- ---------------------------- +-- Records of sync_fields_info +-- ---------------------------- +INSERT INTO sync_fields_info VALUES (1,10,'data_eaif_h','maxtemp',4,'MaxTemp',1); +INSERT INTO sync_fields_info VALUES (2,10,'data_eaif_h','mintemp',4,'MinTemp',1); +INSERT INTO sync_fields_info VALUES (3,10,'data_eaif_h','avgtemp',4,'avgtemp',1); +INSERT INTO sync_fields_info VALUES (4,10,'data_eaif_h','phase',2,'Phase',1); +INSERT INTO sync_fields_info VALUES (8,10,'data_eia_h','phase',2,'Phase',1); +INSERT INTO sync_fields_info VALUES (9,10,'data_eia_h','d_ct_1',4,'TotalCoreCurrent',1); +INSERT INTO sync_fields_info VALUES (13,10,'data_epa_h','h2ppm',0,'H2',1); +INSERT INTO sync_fields_info VALUES (14,10,'data_epa_h','ch4ppm',0,'CH4',1); +INSERT INTO sync_fields_info VALUES (15,10,'data_epa_h','c2h6ppm',0,'C2H6',1); +INSERT INTO sync_fields_info VALUES (16,10,'data_epa_h','c2h4ppm',0,'C2H4',1); +INSERT INTO sync_fields_info VALUES (17,10,'data_epa_h','c2h2ppm',0,'C2H2',1); +INSERT INTO sync_fields_info VALUES (18,10,'data_epa_h','coppm',0,'CO',1); +INSERT INTO sync_fields_info VALUES (19,10,'data_epa_h','co2ppm',0,'CO2',1); +INSERT INTO sync_fields_info VALUES (20,10,'data_epa_h','o2ppm',0,'O2',1); +INSERT INTO sync_fields_info VALUES (21,10,'data_epa_h','n2ppm',0,'N2',1); +INSERT INTO sync_fields_info VALUES (22,10,'data_epa_h','totalhydrocarbon',0,'TotalHydrocarbon',1); +INSERT INTO sync_fields_info VALUES (23,10,'data_epa_h','gaspress',0,'GasPress',1); +INSERT INTO sync_fields_info VALUES (24,10,'data_epa_h','h2oppm',0,'H2O',1); +INSERT INTO sync_fields_info VALUES (28,10,'data_microclimate_h','envtmp',0,'AirTemperature',1); +INSERT INTO sync_fields_info VALUES (29,10,'data_microclimate_h','envpres',0,'AirPressure',1); +INSERT INTO sync_fields_info VALUES (30,10,'data_microclimate_h','envhum',0,'Humidity',1); +INSERT INTO sync_fields_info VALUES (31,10,'data_microclimate_h','rnfll',0,'Precipitation',1); +INSERT INTO sync_fields_info VALUES (35,10,'data_pd_h','waveform',0,'DischargeCapacity',1); +INSERT INTO sync_fields_info VALUES (36,10,'data_pd_h','apppadsch',0,'DischargePosition',1); +INSERT INTO sync_fields_info VALUES (37,10,'data_pd_h','plsnum',0,'PulseCount',1); +INSERT INTO sync_fields_info VALUES (38,10,'data_pd_h','waveform',0,'DischargeCapacity',1); +INSERT INTO sync_fields_info VALUES (39,10,'data_pd_h','apppadsch',0,'MaxDsch',1); +INSERT INTO sync_fields_info VALUES (40,10,'data_pd_h','plsnum',0,'PulseCount',1); +INSERT INTO sync_fields_info VALUES (41,10,'data_pd_h','padschalm',0,'SupDevRun',1); +INSERT INTO sync_fields_info VALUES (42,10,'data_pd_h','padschtype',0,'DschType',1); +INSERT INTO sync_fields_info VALUES (43,10,'data_pd_h','nqs',0,'AvDsch',1); +INSERT INTO sync_fields_info VALUES (50,10,'data_scur_h','current_val',0,'CoreCurrent',1); +INSERT INTO sync_fields_info VALUES (61,10,'data_sf6_h','ddt1',0,'Dewpoint',1); +INSERT INTO sync_fields_info VALUES (62,10,'data_sf6_h','md1',0,'Density',1); +INSERT INTO sync_fields_info VALUES (63,10,'data_sf6_h','pm1',0,'Moisture',1); +INSERT INTO sync_fields_info VALUES (64,10,'data_sf6_h','pressure1',0,'Pressure20C',1); +INSERT INTO sync_fields_info VALUES (65,10,'data_sf6_h','temp1',0,'Temperature',1); +INSERT INTO sync_fields_info VALUES (66,10,'data_sf6_h','ddt2',0,'Dewpoint',2); +INSERT INTO sync_fields_info VALUES (67,10,'data_sf6_h','md2',0,'Density',2); +INSERT INTO sync_fields_info VALUES (68,10,'data_sf6_h','pm2',0,'Moisture',2); +INSERT INTO sync_fields_info VALUES (69,10,'data_sf6_h','pressure2',0,'Pressure20C',2); +INSERT INTO sync_fields_info VALUES (70,10,'data_sf6_h','temp2',0,'Temperature',2); +INSERT INTO sync_fields_info VALUES (71,10,'data_sf6_h','ddt3',0,'Dewpoint',3); +INSERT INTO sync_fields_info VALUES (72,10,'data_sf6_h','md3',0,'Density',3); +INSERT INTO sync_fields_info VALUES (73,10,'data_sf6_h','pm3',0,'Moisture',3); +INSERT INTO sync_fields_info VALUES (74,10,'data_sf6_h','pressure3',0,'Pressure20C',3); +INSERT INTO sync_fields_info VALUES (75,10,'data_sf6_h','temp3',0,'Temperature',3); diff --git a/mqtt/setup.ini b/mqtt/setup.ini new file mode 100644 index 0000000..0d61d31 --- /dev/null +++ b/mqtt/setup.ini @@ -0,0 +1,8 @@ +### 安装根目录 ### +BASE_DIR=/home/xydl +### 数据库配置 ### +DB_IP=10.0.17.25 +DB_PORT=3306 +DB_INS=cacdb +DB_USER=root +DB_PASS=123456 diff --git a/mqtt/setup.sh b/mqtt/setup.sh new file mode 100644 index 0000000..423dedd --- /dev/null +++ b/mqtt/setup.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +#################### init system env ################################################ + +### 检测操作系统位数,如果非64位操作系统,则退出 +SYSBIT=`getconf LONG_BIT` +if [ X"${SYSBIT}" != X"64" ]; then + echo "当前系统非x64,不能执行安装!" + exit 1 +fi +ARM=`arch` +JAVA_PATH=$(which java) +if [ -z $JAVA_PATH ]; then + echo "Java未安装" + exit 1 +fi + +#################### 安装CAC Mqtt ################################################ +installMqtt(){ + echo "************[installing CAC Mqtt]正在安装CAC Mqtt >>>>>>>>>>>>>" + rm -rf ${ANA_DIR}/* + cp package/mqtt-1.0.0.jar ${ANA_DIR}/ + echo ${ANA_DIR}" installed." + unzip -qj package/mqtt-1.0.0.jar BOOT-INF/classes/application-prod.yml -d ${ANA_DIR}/config + sleep 1 + sed -i 's/cac/'${DB_INS}'/' ${ANA_DIR}/config/application-prod.yml + sed -i 's/localhost:3306/'${DB_IP}':'${DB_PORT}'/' ${ANA_DIR}/config/application-prod.yml + sed -i 's/username: root/username: '${DB_USER}'/' ${ANA_DIR}/config/application-prod.yml + sed -i 's/password: root/password: '${DB_PASS}'/' ${ANA_DIR}/config/application-prod.yml + sed -i 's#/home/xydl/mqtt/logs/mqtt.log#'${BIN_DIR}'/logs/mqtt.log#' ${ANA_DIR}/config/application-prod.yml + + echo 'if [ -n "$(ps -ef | grep mqtt-1.0.0 | grep -v grep | awk '"'"'{print $2}'"'"')" ]; then' > ${BIN_DIR}/startMqtt.sh + echo ' echo "mqtt-1.0.0 is running"' >> ${BIN_DIR}/startMqtt.sh + echo 'else' >> ${BIN_DIR}/startMqtt.sh + echo " cd "${ANA_DIR} >> ${BIN_DIR}/startMqtt.sh + echo ' echo "Starting mqtt-1.0.0"' >> ${BIN_DIR}/stopMqtt.sh + echo " nohup ${JAVA_PATH} -jar mqtt-1.0.0.jar --spring.profiles.active=prod >/dev/null 2>&1 &" >> ${BIN_DIR}/startMqtt.sh + echo " rm -f ${ANA_DIR}/RUNNING.lock" >> ${BIN_DIR}/startMqtt.sh + echo 'fi' >> ${BIN_DIR}/startMqtt.sh + + echo 'if [ -n "$(ps -ef | grep mqtt-1.0.0 | grep -v grep | awk '"'"'{print $2}'"'"')" ]; then' > ${BIN_DIR}/stopMqtt.sh + echo " rm -f ${ANA_DIR}/RUNNING.lock" >> ${BIN_DIR}/stopMqtt.sh + echo ' kill $(ps -ef | grep mqtt-1.0.0 | grep -v grep | awk '"'"'{print $2}'"'"')' >> ${BIN_DIR}/stopMqtt.sh + echo ' echo "Stopping mqtt-1.0.0"' >> ${BIN_DIR}/stopMqtt.sh + echo 'else' >> ${BIN_DIR}/stopMqtt.sh + echo ' echo "mqtt-1.0.0 is not running"' >> ${BIN_DIR}/stopMqtt.sh + echo 'fi' >> ${BIN_DIR}/stopMqtt.sh + chmod +x ${BIN_DIR}/startMqtt.sh + chmod +x ${BIN_DIR}/stopMqtt.sh + echo "" + sleep 1 +} + + +#################### 加入开机启动 ################################################ +setAutoStartMqtt(){ + if [ `grep -c ${BIN_DIR}/startMqtt.sh /etc/rc.d/rc.local` -eq '0' ]; then + echo '#CAC Mqtt' >> /etc/rc.d/rc.local + echo ${BIN_DIR}/startMqtt.sh >> /etc/rc.d/rc.local + fi + echo "CAC Mqtt已加入开机启动." + echo "" + job="* * * * * ${BIN_DIR}/checkMqtt.sh > /dev/null 2>&1 " + ( crontab -l | grep -v "$job"; echo "$job" ) | crontab - + echo "checkMqtt已加入crontab." + echo "" +} + + + +sed -i 's/\r//g' setup.ini +source setup.ini + + +BASE_DIR=${BASE_DIR%*/} +BIN_DIR=${BASE_DIR}/mqtt +ANA_DIR=${BASE_DIR}/mqtt + +### 创建默认的目录 +mkdir -p ${BIN_DIR} + +installMqtt + +setAutoStartMqtt + +cp -f package/checkMqtt.sh ${ANA_DIR} +sed -i 's/\r//g' ${ANA_DIR}/checkMqtt.sh +sed -i 's#BASE_DIR#'${ANA_DIR}'#g' ${ANA_DIR}/checkMqtt.sh +chmod +x ${ANA_DIR}/checkMqtt.sh + +echo "************[install finished.]安装完成. >>>>>>>>>>>>>" +sleep 1