You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
374 lines
13 KiB
Bash
374 lines
13 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
### 检测操作系统位数,如果非64位操作系统,则退出
|
|
SYSBIT=`getconf LONG_BIT`
|
|
if [ X"${SYSBIT}" != X"64" ]; then
|
|
echo "当前系统非x64,不能执行安装!"
|
|
exit 1
|
|
fi
|
|
ARM=`arch`
|
|
|
|
#################### 安装数据库 ################################################
|
|
installDatabase(){
|
|
DB_DIR=${BASE_DIR}/db
|
|
echo "************ 开始安装Mysql5.7 >>>>>>>>>>>>>"
|
|
echo ""
|
|
dpkg -i package/libmecab2_0.996-14build9_amd64.deb
|
|
dpkg -i package/libtinfo5_6.3-2ubuntu0.1_amd64.deb
|
|
dpkg -i package/libaio1_0.3.112-13build1_amd64.deb
|
|
|
|
dpkg -i package/mysql-common_5.7.42-1ubuntu18.04_amd64.deb
|
|
dpkg -i package/mysql-community-client_5.7.42-1ubuntu18.04_amd64.deb
|
|
dpkg -i package/mysql-client_5.7.42-1ubuntu18.04_amd64.deb
|
|
debconf-set-selections <<< "mysql-community-server mysql-community-server/root-pass password ${DB_PASS}"
|
|
debconf-set-selections <<< "mysql-community-server mysql-community-server/re-root-pass password ${DB_PASS}"
|
|
dpkg -i package/mysql-community-server_5.7.42-1ubuntu18.04_amd64.deb
|
|
dpkg -i package/mysql-server_5.7.42-1ubuntu18.04_amd64.deb
|
|
sleep 1
|
|
echo ""
|
|
|
|
echo " 停止Mysql ..."
|
|
echo ""
|
|
systemctl stop mysql
|
|
sleep 1
|
|
sed -i 's/123456/'${DB_PASS}'/' package/init.sql
|
|
|
|
echo " 初始化数据库 ..."
|
|
echo ""
|
|
mv /var/lib/mysql ${DB_DIR}
|
|
chown -R mysql:mysql ${DB_DIR}
|
|
sed -i 's/^[^#]*bind-address*/#&/g' /etc/mysql/mysql.conf.d/mysqld.cnf
|
|
sed -i 's#datadir.*#datadir='${DB_DIR}'#' /etc/mysql/mysql.conf.d/mysqld.cnf
|
|
sed -i 's#/var/lib/mysql/#'${DB_DIR}/'#' /etc/apparmor.d/usr.sbin.mysqld
|
|
service apparmor reload
|
|
systemctl start mysql
|
|
sleep 1
|
|
export MYSQL_PWD=${DB_PASS}
|
|
mysql -u root < package/init.sql
|
|
sleep 1
|
|
echo " 重启数据库 ..."
|
|
echo ""
|
|
systemctl restart mysql
|
|
sleep 1
|
|
}
|
|
|
|
createDatabase(){
|
|
echo " 建库建表 ..."
|
|
echo ""
|
|
sed -i 's/cacdb/'${DB_INS}'/g' package/cacdb.sql
|
|
export MYSQL_PWD=${DB_PASS}
|
|
mysql -u root < package/cacdb.sql
|
|
sleep 1
|
|
}
|
|
|
|
#################### 安装OpenJDK ################################################
|
|
installJDK(){
|
|
echo "************[prepare to install OpenJDK]准备开始装OpenJDK >>>>>>>>>>>>>"
|
|
echo ""
|
|
JDK_HOME=${BASE_DIR}/jdk
|
|
if [ ! -d ${JDK_HOME} ]; then
|
|
tar -zxf package/jdk_x64_linux_8u392b08.tar.gz -C ${BASE_DIR}
|
|
ln -s ${BASE_DIR}/jdk8u392-b08 ${BASE_DIR}/jdk
|
|
echo ${JDK_HOME}" installed."
|
|
|
|
if [ `grep -c JAVA_HOME=${JDK_HOME} /etc/profile` -eq '0' ]; then
|
|
echo 'export JAVA_HOME='${JDK_HOME} >> /etc/profile
|
|
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
|
|
source /etc/profile
|
|
fi
|
|
else
|
|
echo ${JDK_HOME}" found, 跳过JDK."
|
|
fi
|
|
JAVA_PATH=${JDK_HOME}/bin/java
|
|
echo ""
|
|
sleep 1
|
|
}
|
|
|
|
#################### 安装Nginx ################################################
|
|
installNginx(){
|
|
echo "************[prepare to install Nginx]准备开始装Nginx >>>>>>>>>>>>>"
|
|
echo ""
|
|
NGX_HOME=${BASE_DIR}/nginx
|
|
if [ ! -d ${NGX_HOME} ]; then
|
|
tar -zxf package/nginx.tar.gz -C ${BASE_DIR}
|
|
echo ${NGX_HOME}" installed."
|
|
sed -i 's#/etc/nginx/conf.d#'${BASE_DIR}'/conf#g' ${NGX_HOME}/conf/nginx.conf
|
|
|
|
echo ' echo "Starting nginx"' > ${BIN_DIR}/startNginx.sh
|
|
echo ${NGX_HOME}'/sbin/nginx -p '${NGX_HOME}' -c '${NGX_HOME}'/conf/nginx.conf' >> ${BIN_DIR}/startNginx.sh
|
|
echo ' echo "Stopping nginx"' > ${BIN_DIR}/stopNginx.sh
|
|
echo ${NGX_HOME}'/sbin/nginx -s stop -p '${NGX_HOME} >> ${BIN_DIR}/stopNginx.sh
|
|
chmod +x ${BIN_DIR}/startNginx.sh
|
|
chmod +x ${BIN_DIR}/stopNginx.sh
|
|
else
|
|
echo ${NGX_HOME}" found, 跳过Nginx."
|
|
fi
|
|
echo ""
|
|
sleep 1
|
|
}
|
|
|
|
#################### 安装Redis ################################################
|
|
installRedis(){
|
|
echo "************[prepare to install Redis]准备开始安装Redis >>>>>>>>>>>>>"
|
|
echo ""
|
|
REDIS_HOME=${BASE_DIR}/redis
|
|
if [ ! -d ${REDIS_HOME} ]; then
|
|
tar -zxf package/redis-5.0.14-x86_64.tar.gz -C ${BASE_DIR}
|
|
echo ${REDIS_HOME}" installed."
|
|
|
|
sed -i 's/daemonize no/daemonize yes/' ${REDIS_HOME}/conf/redis.conf
|
|
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' ${REDIS_HOME}/conf/redis.conf
|
|
sed -i 's/# requirepass foobared/requirepass '${REDIS_PASS}'/' ${REDIS_HOME}/conf/redis.conf
|
|
|
|
echo "cd "${REDIS_HOME} > ${BIN_DIR}/startRedis.sh
|
|
echo ${REDIS_HOME}/bin/redis-server ${REDIS_HOME}/conf/redis.conf >> ${BIN_DIR}/startRedis.sh
|
|
echo 'if [ -n "$(ps -ef | grep redis-server | grep -v grep | awk '"'"'{print $2}'"'"')" ]; then' > ${BIN_DIR}/stopRedis.sh
|
|
echo " rm -f ${BASE_DIR}/RUNNING.lock" >> ${BIN_DIR}/stopRedis.sh
|
|
echo ' kill $(ps -ef | grep redis-server | grep -v grep | awk '"'"'{print $2}'"'"')' >> ${BIN_DIR}/stopRedis.sh
|
|
echo ' echo "redis-server is stopping"' >> ${BIN_DIR}/stopRedis.sh
|
|
echo 'else' >> ${BIN_DIR}/stopRedis.sh
|
|
echo ' echo "redis-server is not running"' >> ${BIN_DIR}/stopRedis.sh
|
|
echo 'fi' >> ${BIN_DIR}/stopRedis.sh
|
|
chmod +x ${BIN_DIR}/startRedis.sh
|
|
chmod +x ${BIN_DIR}/stopRedis.sh
|
|
else
|
|
echo ${REDIS_HOME}" found, 跳过Redis."
|
|
fi
|
|
echo ""
|
|
sleep 1
|
|
}
|
|
|
|
#################### 安装New CAC ################################################
|
|
installNewCAC(){
|
|
echo "************[installing New CAC]正在安装New CAC >>>>>>>>>>>>>"
|
|
echo ""
|
|
APP_NAME=cac-backend-1.0
|
|
rm -rf ${CAC_DIR}/*
|
|
cp package/${APP_NAME}.jar ${CAC_DIR}/
|
|
unzip -q package/static.zip -d ${CAC_DIR}/
|
|
cp package/cac.conf ${BASE_DIR}/conf/
|
|
cp package/cac-ssl.conf ${BASE_DIR}/conf/
|
|
cp package/ca.prikey ${BASE_DIR}/cert/
|
|
cp package/ca.cert ${BASE_DIR}/cert/
|
|
sed -i 's#/home/xydl#'${BASE_DIR}'#g' ${BASE_DIR}/conf/cac.conf
|
|
sed -i 's#/home/xydl#'${BASE_DIR}'#g' ${BASE_DIR}/conf/cac-ssl.conf
|
|
echo ${CAC_DIR}" installed."
|
|
unzip -qj package/${APP_NAME}.jar BOOT-INF/classes/application-prod.yml -d ${CAC_DIR}/config
|
|
sleep 1
|
|
sed -i 's/cacdb/'${DB_INS}'/' ${CAC_DIR}/config/application-prod.yml
|
|
sed -i 's/127.0.0.1:3306/'${DB_IP}':'${DB_PORT}'/' ${CAC_DIR}/config/application-prod.yml
|
|
sed -i 's/username: root/username: '${DB_USER}'/' ${CAC_DIR}/config/application-prod.yml
|
|
sed -i 's/password: 123456/password: '${DB_PASS}'/' ${CAC_DIR}/config/application-prod.yml
|
|
sed -i 's#/home/xydl/ncac#'${CAC_DIR}'#' ${CAC_DIR}/config/application-prod.yml
|
|
|
|
echo '#!/bin/bash' > ${BIN_DIR}/startCac.sh
|
|
echo 'if [ -n "$(ps -ef | grep '${APP_NAME}' | grep -v grep | awk '"'"'{print $2}'"'"')" ]; then' >> ${BIN_DIR}/startCac.sh
|
|
echo ' echo "'${APP_NAME}' is running"' >> ${BIN_DIR}/startCac.sh
|
|
echo 'else' >> ${BIN_DIR}/startCac.sh
|
|
echo " cd "${CAC_DIR} >> ${BIN_DIR}/startCac.sh
|
|
echo ' echo "Starting '${APP_NAME}'"' >> ${BIN_DIR}/startCac.sh
|
|
echo " nohup ${JAVA_PATH} -jar ${APP_NAME}.jar --spring.profiles.active=prod >/dev/null 2>&1 &" >> ${BIN_DIR}/startCac.sh
|
|
echo " rm -f ${CAC_DIR}/RUNNING.lock" >> ${BIN_DIR}/startCac.sh
|
|
echo 'fi' >> ${BIN_DIR}/startCac.sh
|
|
|
|
echo '#!/bin/bash' > ${BIN_DIR}/stopCac.sh
|
|
echo 'if [ -n "$(ps -ef | grep '${APP_NAME}' | grep -v grep | awk '"'"'{print $2}'"'"')" ]; then' >> ${BIN_DIR}/stopCac.sh
|
|
echo " rm -f ${CAC_DIR}/RUNNING.lock" >> ${BIN_DIR}/stopCac.sh
|
|
echo ' kill $(ps -ef | grep '${APP_NAME}' | grep -v grep | awk '"'"'{print $2}'"'"')' >> ${BIN_DIR}/stopCac.sh
|
|
echo ' echo "Stopping '${APP_NAME}'"' >> ${BIN_DIR}/stopCac.sh
|
|
echo 'else' >> ${BIN_DIR}/stopCac.sh
|
|
echo ' echo "'${APP_NAME}' is not running"' >> ${BIN_DIR}/stopCac.sh
|
|
echo 'fi' >> ${BIN_DIR}/stopCac.sh
|
|
chmod +x ${BIN_DIR}/startCac.sh
|
|
chmod +x ${BIN_DIR}/stopCac.sh
|
|
echo ""
|
|
if [ `grep -c ${BIN_DIR} /etc/profile` -eq '0' ]; then
|
|
echo 'export PATH=$PATH:'${BIN_DIR} >> /etc/profile
|
|
source /etc/profile
|
|
fi
|
|
sleep 1
|
|
}
|
|
|
|
#################### 安装61850 ################################################
|
|
install61850(){
|
|
echo "************[installing 61850]正在安装61850 >>>>>>>>>>>>>"
|
|
echo ""
|
|
QTDIR=/usr/local/Trolltech/Qt-4.8.6
|
|
if [ ! -d ${QTDIR} ]; then
|
|
tar -zxf package/Trolltech.tar.gz -C /usr/local
|
|
echo ${QTDIR}" installed."
|
|
else
|
|
echo ${QTDIR}" found, 跳过QT."
|
|
fi
|
|
echo ""
|
|
sleep 1
|
|
|
|
GUI_DIR=${BASE_DIR}/61850_GUI
|
|
rm -rf ${GUI_DIR}
|
|
tar -zxf package/61850_GUI.tar.gz -C ${BASE_DIR}
|
|
cp package/stop61850.sh ${BIN_DIR}/
|
|
cp package/check61850.sh ${BIN_DIR}/
|
|
echo ${GUI_DIR}" installed."
|
|
echo ""
|
|
sleep 1
|
|
if [ `grep -c QTDIR=${QTDIR} /etc/profile` -eq '0' ]; then
|
|
echo 'export QTDIR='${QTDIR} >> /etc/profile
|
|
echo 'export QT_HOME='${QTDIR} >> /etc/profile
|
|
echo 'export PATH=$PATH:'${QTDIR}'/bin:'${GUI_DIR} >> /etc/profile
|
|
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:'${QTDIR}'/lib:'${QTDIR}'/plugins/sqldrivers:'${GUI_DIR} >> /etc/profile
|
|
source /etc/profile
|
|
fi
|
|
|
|
sed -i 's/hostname=127.0.0.1/hostname='${DB_IP}'/' ${GUI_DIR}/syscfg.ini
|
|
sed -i 's/port=3306/port='${DB_PORT}'/' ${GUI_DIR}/syscfg.ini
|
|
sed -i 's/dbname=cacdb/dbname='${DB_INS}'/' ${GUI_DIR}/syscfg.ini
|
|
sed -i 's/usrname=root/usrname='${DB_USER}'/' ${GUI_DIR}/syscfg.ini
|
|
sed -i 's/psw=123456/psw='${DB_PASS}'/' ${GUI_DIR}/syscfg.ini
|
|
sed -i 's#/home/xydl#'${BASE_DIR}'#g' ${BIN_DIR}/check61850.sh
|
|
sed -i 's#/home/xydl#'${BASE_DIR}'#g' ${BIN_DIR}/stop61850.sh
|
|
|
|
APP_NAME=61850Gui_Release_zhenan
|
|
echo '#!/bin/bash' > ${BIN_DIR}/start61850.sh
|
|
echo 'export QTDIR='${QTDIR} >> ${BIN_DIR}/start61850.sh
|
|
echo 'export QT_HOME='${QTDIR} >> ${BIN_DIR}/start61850.sh
|
|
echo 'export PATH=$PATH:'${QTDIR}'/bin:'${GUI_DIR} >> ${BIN_DIR}/start61850.sh
|
|
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:'${QTDIR}'/lib:'${QTDIR}'/plugins/sqldrivers:'${GUI_DIR} >> ${BIN_DIR}/start61850.sh
|
|
echo 'export DISPLAY=:0' >> ${BIN_DIR}/start61850.sh
|
|
echo 'if [ -n "$(ps -ef | grep '${APP_NAME}' | grep -v grep | awk '"'"'{print $2}'"'"')" ]; then' >> ${BIN_DIR}/start61850.sh
|
|
echo ' echo "'${APP_NAME}' is running"' >> ${BIN_DIR}/start61850.sh
|
|
echo 'else' >> ${BIN_DIR}/start61850.sh
|
|
echo " cd "${GUI_DIR} >> ${BIN_DIR}/start61850.sh
|
|
echo ' echo "Starting '${APP_NAME}'"' >> ${BIN_DIR}/start61850.sh
|
|
echo " nohup ./${APP_NAME} >/dev/null 2>&1 &" >> ${BIN_DIR}/start61850.sh
|
|
echo " rm -f ${GUI_DIR}/RUNNING.lock" >> ${BIN_DIR}/start61850.sh
|
|
echo 'fi' >> ${BIN_DIR}/start61850.sh
|
|
|
|
echo '#!/bin/bash' > ${BIN_DIR}/restart61850.sh
|
|
echo 'cd '${BIN_DIR} >> ${BIN_DIR}/restart61850.sh
|
|
echo "./stop61850.sh" >> ${BIN_DIR}/restart61850.sh
|
|
echo "./start61850.sh" >> ${BIN_DIR}/restart61850.sh
|
|
|
|
chmod +x ${BIN_DIR}/start61850.sh
|
|
chmod +x ${BIN_DIR}/stop61850.sh
|
|
chmod +x ${BIN_DIR}/restart61850.sh
|
|
chmod +x ${BIN_DIR}/check61850.sh
|
|
}
|
|
|
|
|
|
#################### 加入开机启动 ################################################
|
|
setAutoStartCac(){
|
|
if [ `grep -c ${BIN_DIR}/startCac.sh /etc/rc.local` -eq '0' ]; then
|
|
echo '#NewCAC' >> /etc/rc.local
|
|
echo ${BIN_DIR}/startCac.sh >> /etc/rc.local
|
|
fi
|
|
echo "CAC已加入开机启动."
|
|
echo ""
|
|
}
|
|
setAutoStart61850(){
|
|
job="* * * * * ${BIN_DIR}/check61850.sh > /dev/null 2>&1 "
|
|
echo "$job" > cron.cron
|
|
job2="15 1 * * * ${BIN_DIR}/restart61850.sh "
|
|
echo "$job2" >> cron.cron
|
|
crontab cron.cron
|
|
echo "61850巡检任务已加入crontab."
|
|
echo ""
|
|
rm -f cron.cron
|
|
}
|
|
setAutoStartRedis(){
|
|
if [ `grep -c ${BIN_DIR}/startRedis.sh /etc/rc.local` -eq '0' ]; then
|
|
echo '#Redis' >> /etc/rc.local
|
|
echo ${BIN_DIR}/startRedis.sh >> /etc/rc.local
|
|
echo "Redis已加入开机启动."
|
|
echo ""
|
|
fi
|
|
}
|
|
setAutoStartNginx(){
|
|
if [ `grep -c ${BIN_DIR}/startNginx.sh /etc/rc.local` -eq '0' ]; then
|
|
echo '#Nginx' >> /etc/rc.local
|
|
echo ${BIN_DIR}/startNginx.sh >> /etc/rc.local
|
|
echo "Nginx已加入开机启动."
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
updateFirewall(){
|
|
echo "更新防火墙规则."
|
|
echo ""
|
|
ufw allow 80/tcp
|
|
ufw allow 443/tcp
|
|
ufw allow 3306/tcp
|
|
ufw allow 102/tcp
|
|
}
|
|
|
|
|
|
|
|
sed -i 's/\r//g' setup.ini
|
|
source setup.ini
|
|
|
|
if [ $CAC_INS == 1 ]; then
|
|
if [ $JDK_INS == 0 ]; then
|
|
JAVA_PATH=$(which java)
|
|
if [ -z $JAVA_PATH ]; then
|
|
JDK_INS=1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
BASE_DIR=${BASE_DIR%*/}
|
|
BIN_DIR=${BASE_DIR}/bin
|
|
CAC_DIR=${BASE_DIR}/ncac
|
|
|
|
### 创建默认的目录
|
|
mkdir -p ${BIN_DIR}
|
|
mkdir -p ${CAC_DIR}
|
|
mkdir -p ${BASE_DIR}/conf
|
|
mkdir -p ${BASE_DIR}/cert
|
|
if [ ! -e "/etc/rc.local" ]; then
|
|
cp package/rc.local /etc/
|
|
fi
|
|
chmod +x /etc/rc.local
|
|
if [ `grep -c 'Install' /lib/systemd/system/rc-local.service` -eq '0' ]; then
|
|
echo '' >> /lib/systemd/system/rc-local.service
|
|
echo '[Install]' >> /lib/systemd/system/rc-local.service
|
|
echo 'WantedBy=multi-user.target' >> /lib/systemd/system/rc-local.service
|
|
systemctl daemon-reload
|
|
fi
|
|
|
|
if [ $MYSQL_INS == 1 ]; then
|
|
installDatabase
|
|
fi
|
|
if [ $DB_CREATE == 1 ]; then
|
|
createDatabase
|
|
fi
|
|
|
|
if [ $JDK_INS == 1 ]; then
|
|
installJDK
|
|
fi
|
|
|
|
if [ $REDIS_INS == 1 ]; then
|
|
installRedis
|
|
setAutoStartRedis
|
|
fi
|
|
|
|
if [ $CAC_INS == 1 ]; then
|
|
installNewCAC
|
|
if [ $AUTO_START == 1 ]; then
|
|
setAutoStartCac
|
|
fi
|
|
fi
|
|
|
|
if [ $NGINX_INS == 1 ]; then
|
|
installNginx
|
|
setAutoStartNginx
|
|
fi
|
|
|
|
updateFirewall
|
|
|
|
echo "************[install finished.]安装完成. >>>>>>>>>>>>>"
|
|
echo ""
|
|
sleep 1
|
|
echo "tips: 记得运行 source /etc/profile 使配置生效,之后可以使用${BIN_DIR}目录下的下列脚本"
|
|
cd ${BIN_DIR}
|
|
ls
|
|
echo "" |