Commit 1da222bb authored by 赵啸非's avatar 赵啸非

修改部署脚本

parent 8e44723f
...@@ -50,6 +50,7 @@ MYSQL_SERVICE="${SERVICE_PATH}/mysql.service" ...@@ -50,6 +50,7 @@ MYSQL_SERVICE="${SERVICE_PATH}/mysql.service"
RABBITMQ="rabbitmq" RABBITMQ="rabbitmq"
RABBIT_CENTOS_FILENAME="rabbitmq-server-3.9.16-1.el7.noarch.rpm" RABBIT_CENTOS_FILENAME="rabbitmq-server-3.9.16-1.el7.noarch.rpm"
ELANG_CENTOS_FILENAME="erlang-23.3.4.11-1.el7.x86_64.rpm" ELANG_CENTOS_FILENAME="erlang-23.3.4.11-1.el7.x86_64.rpm"
RABBITMQ_IP="127.0.0.1"
RABBITMQ_USER="taxi_mq" RABBITMQ_USER="taxi_mq"
RABBITMQ_PASSWORD="admin@2020" RABBITMQ_PASSWORD="admin@2020"
RABBITMQ_CONF_PATH="/etc/rabbitmq/" RABBITMQ_CONF_PATH="/etc/rabbitmq/"
...@@ -67,10 +68,16 @@ CDATE=$(date "+%Y-%m-%d") ...@@ -67,10 +68,16 @@ CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%H-%M-%S") CTIME=$(date "+%H-%M-%S")
NACOS="nacos" NACOS="nacos"
NACOS_HOST="127.0.0.1"
NACOS_FILENAME="nacos-server-2.1.1.tar.gz" NACOS_FILENAME="nacos-server-2.1.1.tar.gz"
NACOS_SERVICE="${SERVICE_PATH}/${NACOS}.service" NACOS_SERVICE="${SERVICE_PATH}/${NACOS}.service"
NACOS_EXECPATH="${OPT_PATH}/${NACOS}" NACOS_EXECPATH="${OPT_PATH}/${NACOS}"
# 项目部署平台
SETUP_PROJECT_PLATFORM="setup-project-manager"
SETUP_PROJECT_PLATFORM_FILENAME="${SETUP_PROJECT_PLATFORM}.tar.gz"
SETUP_PROJECT_PLATFORM_SERVICE="${SERVICE_PATH}/${SETUP_PROJECT_PLATFORM}.service"
SETUP_PROJECT_PLATFORM_EXECPATH="${PUBLISH_PATH}/${SETUP_PROJECT_PLATFORM}"
#加锁 #加锁
shell_lock() { shell_lock() {
...@@ -87,8 +94,6 @@ writelog() { ...@@ -87,8 +94,6 @@ writelog() {
echo ${LOGINFO} echo ${LOGINFO}
} }
check_cpu() { check_cpu() {
cpu_info=$(arch) cpu_info=$(arch)
writelog ${cpu_info} writelog ${cpu_info}
...@@ -119,10 +124,9 @@ setup_java() { ...@@ -119,10 +124,9 @@ setup_java() {
echo "export JRE_HOME=$JAVA_HOME/jre" >>/etc/profile echo "export JRE_HOME=$JAVA_HOME/jre" >>/etc/profile
echo "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib" >>/etc/profile echo "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib" >>/etc/profile
echo "export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin" >>/etc/profile echo "export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin" >>/etc/profile
source /etc/profile #使配置立即生效
#检查Java安装和配置 #检查Java安装和配置
cd $BASEDIR cd $BASEDIR
writelog "setup java finish!" writelog "JAVA 环境软件安装完成"
} }
setup_redis() { setup_redis() {
...@@ -161,7 +165,7 @@ WantedBy=multi-user.target ...@@ -161,7 +165,7 @@ WantedBy=multi-user.target
systemctl daemon-reload systemctl daemon-reload
systemctl start redis systemctl start redis
writelog "setup redis finish" writelog "REDIS环境软件安装完成!"
} }
setup_mysql() { setup_mysql() {
...@@ -188,7 +192,7 @@ socket=/tmp/mysql.sock ...@@ -188,7 +192,7 @@ socket=/tmp/mysql.sock
port = ${MYSQL_PORT} port = ${MYSQL_PORT}
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0 symbolic-links=0
max_connections=400 max_connections=800
innodb_file_per_table=1 innodb_file_per_table=1
#表名存储在磁盘是小写的,但是比较的时候是不区分大小写 #表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=1 lower_case_table_names=1
...@@ -269,16 +273,12 @@ setup_rabbitmq() { ...@@ -269,16 +273,12 @@ setup_rabbitmq() {
rabbitmqctl set_user_tags ${RABBITMQ_USER} administrator # 设置用户角色,分配操作权限 rabbitmqctl set_user_tags ${RABBITMQ_USER} administrator # 设置用户角色,分配操作权限
rabbitmqctl set_permissions -p / ${RABBITMQ_USER} ".*" ".*" ".*" # 为用户添加资源权限(授予访问虚拟机根节点的所有权限) rabbitmqctl set_permissions -p / ${RABBITMQ_USER} ".*" ".*" ".*" # 为用户添加资源权限(授予访问虚拟机根节点的所有权限)
} }
setup_nginx() { setup_nginx() {
writelog "setup nginx" writelog "setup nginx"
writelog "stop and remove nginx"
systemctl stop nginx systemctl stop nginx
writelog "centos nginx clear"
yum remove nginx yum remove nginx
writelog "nginx depend install" writelog "nginx depend install"
yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
...@@ -295,7 +295,7 @@ setup_nginx() { ...@@ -295,7 +295,7 @@ setup_nginx() {
make make
make install make install
cp -a ${BASEDIR}/release/conf/${NGINX}.conf ${NGINX_CONF} /bin/cp -arf ${BASEDIR}/release/conf/${NGINX}.conf ${NGINX_CONF}
echo "[Unit] echo "[Unit]
Description=${NGINX} Description=${NGINX}
...@@ -322,6 +322,21 @@ setup_nginx() { ...@@ -322,6 +322,21 @@ setup_nginx() {
} }
setup_font() {
writelog "字体安装..."
yum install -y fontconfig mkfontscale
tar -zvxf $BASEDIR/soft/font/Fonts.tar.gz -C /usr/share/fonts
chmod -R 755 /usr/share/fonts/Fonts
mkfontscale
mkfontdir
fc-cache -f -v
writelog "字体安装完成"
}
clear_deploy() { clear_deploy() {
PROJECT_NAME=$1 PROJECT_NAME=$1
SERVICE=$2 SERVICE=$2
...@@ -331,11 +346,12 @@ clear_deploy() { ...@@ -331,11 +346,12 @@ clear_deploy() {
rm -rf ${EXECPATH} rm -rf ${EXECPATH}
rm -f ${NGINX_CONF_PATH}/${PROJECT_NAME}.conf rm -f ${NGINX_CONF_PATH}/${PROJECT_NAME}.conf
if [ ! -d ${EXECPATH} ]; then
mkdir -p ${EXECPATH} mkdir -p ${EXECPATH}
chmod -R 755 $EXECPATH
fi
} }
init_setup() { init_setup() {
writelog "linux install and update" writelog "linux install and update"
...@@ -343,18 +359,32 @@ init_setup() { ...@@ -343,18 +359,32 @@ init_setup() {
yum install -y gcc yum install -y gcc
yum install -y socat yum install -y socat
} }
init_deploy() { init_deploy() {
writelog "init_deploy..." writelog "创建文件目录..."
if [ ! -d ${OPT_PATH} ]; then
mkdir -p ${OPT_PATH}
chmod -R 755 $OPT_PATH
fi
if [ ! -d ${PUBLISH_PATH} ]; then
mkdir -p ${PUBLISH_PATH} mkdir -p ${PUBLISH_PATH}
chmod -R 755 $PUBLISH_PATH chmod -R 755 $PUBLISH_PATH
fi
if [ ! -d "/mortals/app/data" ]; then
mkdir -p /mortals/app/data mkdir -p /mortals/app/data
chmod -R 755 /mortals
fi
if [ ! -d "/mortals/app/logs" ]; then
mkdir -p /mortals/app/logs mkdir -p /mortals/app/logs
chmod -R 755 /mortals chmod -R 755 /mortals
writelog "init_deploy finish" fi
writelog "创建文件目录完成"
} }
...@@ -380,6 +410,50 @@ build_service() { ...@@ -380,6 +410,50 @@ build_service() {
} }
build_nginx_mysql_stream() {
# upstream upstreams_mysql {
# server 192.168.106.7:3306 max_fails=3 fail_timeout=30s;
# }
# server {
# listen 1208;
# proxy_connect_timeout 5s;
# proxy_timeout 30s;
# proxy_pass 192.168.10.151:3306; #需要代理的端口
# proxy_pass 192.168.106.7:3306 max_fails=5 fail_timeout=30s;
# }
SERVICE=$1
echo " server {" >${SERVICE}
echo " listen 3306;" >>${SERVICE}
echo " proxy_connect_timeout 10s;" >>${SERVICE}
echo " proxy_timeout 30s;" >>${SERVICE}
echo " proxy_pass ${MYSQL_HOST}:${MYSQL_PORT};" >>${SERVICE}
echo " }" >>${SERVICE}
writelog "mysql tcp代理创建完成"
}
build_nginx_redis_stream() {
# upstream upstreams_mysql {
# server 192.168.106.7:3306 max_fails=3 fail_timeout=30s;
# }
# server {
# listen 1208;
# proxy_connect_timeout 5s;
# proxy_timeout 30s;
# proxy_pass 192.168.10.151:3306; #需要代理的端口
# proxy_pass 192.168.106.7:3306 max_fails=5 fail_timeout=30s;
# }
SERVICE=$1
echo " server {" >${SERVICE}
echo " listen ${REDIS_HOST};" >>${SERVICE}
echo " proxy_connect_timeout 10s;" >>${SERVICE}
echo " proxy_timeout 30s;" >>${SERVICE}
echo " proxy_pass ${REDIS_HOST}:${REDIS_HOST};" >>${SERVICE}
echo " }" >>${SERVICE}
writelog "mysql tcp代理创建完成"
}
start_service_and_nginx() { start_service_and_nginx() {
PROJECT_NAME=$1 PROJECT_NAME=$1
systemctl enable ${PROJECT_NAME} systemctl enable ${PROJECT_NAME}
...@@ -394,16 +468,31 @@ start_service_and_nginx() { ...@@ -394,16 +468,31 @@ start_service_and_nginx() {
} }
nacos_deploy() { nacos_deploy() {
writelog "${NACOS}_deploy..." writelog "开始安装NACOS"
#writelog "判断当前NACOS 的IP是否已经修改,如果修改了,则重新生成配置文件 IP:$NACOS_HOST"
#writelog "判断当前mysql 的IP是否已经修改,如果修改了,则重新生成配置文件 IP:$MYSQL_HOST"
if [ "$MYSQL_HOST" != "127.0.0.1" ]; then
writelog "判断当前mysql 的IP已经修改,则重新生成配置文件 IP:$MYSQL_HOST"
build_nginx_mysql_stream $NGINX_CONF_PATH/mysql_stream.stream
#todo 添加nginx 针对当前ip的sql stream代理
fi
#查看进程是否存在,如果存在 则不安装
project_status=$(systemctl status "${NACOS}" | grep Active | awk '{print $2}')
if [ -n "$project_status" ]; then
echo "NACOS项目已经安装,状态: $project_status"
return
fi
rm -rf ${NACOS_SERVICE} rm -rf ${NACOS_SERVICE}
rm -rf ${NACOS_EXECPATH} rm -rf ${NACOS_EXECPATH}
mkdir -p ${NACOS_EXECPATH} mkdir -p ${NACOS_EXECPATH}
writelog "tar -zvxf $BASEDIR/release/nacos/${NACOS_FILENAME} -C ${NACOS_EXECPATH} --strip-components 3" writelog "tar -zvxf $BASEDIR/release/nacos/${NACOS_FILENAME} -C ${NACOS_EXECPATH} --strip-components 1"
tar -zvxf $BASEDIR/release/nacos/${NACOS_FILENAME} -C ${NACOS_EXECPATH} --strip-components 3 tar -zvxf $BASEDIR/release/nacos/${NACOS_FILENAME} -C ${NACOS_EXECPATH} --strip-components 1
writelog "${NACOS}_deploy init db..." writelog "NACOS 导入数据库中..."
writelog " mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${NACOS_EXECPATH}/db/nacos.sql" writelog " mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <./db/nacos.sql"
mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${NACOS_EXECPATH}/db/nacos.sql mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <./db/nacos.sql
writelog "创建NACOS启动服务..."
echo "" >$NACOS_SERVICE echo "" >$NACOS_SERVICE
echo "[Unit]" >>$NACOS_SERVICE echo "[Unit]" >>$NACOS_SERVICE
echo "Description=nacos" >>$NACOS_SERVICE echo "Description=nacos" >>$NACOS_SERVICE
...@@ -418,24 +507,60 @@ nacos_deploy() { ...@@ -418,24 +507,60 @@ nacos_deploy() {
echo "" >>$NACOS_SERVICE echo "" >>$NACOS_SERVICE
echo "[Install]" >>$NACOS_SERVICE echo "[Install]" >>$NACOS_SERVICE
echo "WantedBy=multi-user.target" >>$NACOS_SERVICE echo "WantedBy=multi-user.target" >>$NACOS_SERVICE
writelog "NACOS_SERVICE创建完成!"
systemctl enable ${NACOS} chmod -R 755 $NACOS_EXECPATH
systemctl enable $NACOS_SERVICE
systemctl daemon-reload systemctl daemon-reload
systemctl stop ${NACOS} && systemctl start ${NACOS} systemctl stop ${NACOS} && systemctl start ${NACOS}
project_status=$(systemctl status "${PROJECT_NAME}" | grep Active | awk '{print $2}') writelog "NACOS_SERVICE创建启动完成!"
project_status=$(systemctl status "${NACOS}" | grep Active | awk '{print $2}')
jcpid=$(ps -ef | grep -v "grep" | grep "${NACOS} " | awk '{print $2}') jcpid=$(ps -ef | grep -v "grep" | grep "${NACOS} " | awk '{print $2}')
writelog "${NACOS}服务启动!pid is ${jcpid},status is ${project_status}" writelog "${NACOS}服务启动!pid is ${jcpid},status is ${project_status}"
} }
setup_project_deploy() {
writelog "开始安装项目部署平台"
#writelog "判断当前NACOS 的IP是否已经修改,如果修改了,则重新生成配置文件 IP:$NACOS_HOST"
if [ "$MYSQL_HOST" != "127.0.0.1" ]; then
writelog "判断当前mysql 的IP已经修改,则重新生成配置文件 IP:$MYSQL_HOST"
build_nginx_mysql_stream $NGINX_CONF_PATH/mysql_stream.stream
fi
project_status=$(systemctl status "${SETUP_PROJECT_PLATFORM}" | grep Active | awk '{print $2}')
if [ -n "$project_status" ]; then
writelog "工程已经安装,状态: $project_status"
return
fi
clear_deploy ${SETUP_PROJECT_PLATFORM} ${SETUP_PROJECT_PLATFORM_SERVICE} ${SETUP_PROJECT_PLATFORM_EXECPATH}
writelog "项目安装平台清理完成"
writelog "项目安装平台部署中..."
tar -zvxf ${BASEDIR}/release/${SETUP_PROJECT_PLATFORM}/${SETUP_PROJECT_PLATFORM_FILENAME} -C ${PUBLISH_PATH}
writelog "项目安装平台导入数据库中..."
writelog " mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <./db/setup.sql"
mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <./db/setup.sql
writelog "项目安装平台导入数据库完成!"
writelog "创建项目启动服务..."
build_service ${SETUP_PROJECT_PLATFORM} ${SETUP_PROJECT_PLATFORM_SERVICE} ${SETUP_PROJECT_PLATFORM_EXECPATH}
chmod -R 755 $PUBLISH_PATH
systemctl enable $SETUP_PROJECT_PLATFORM
systemctl daemon-reload
systemctl stop ${SETUP_PROJECT_PLATFORM} && systemctl start ${SETUP_PROJECT_PLATFORM}
writelog "安装平台服务创建启动完成!"
project_status=$(systemctl status "${SETUP_PROJECT_PLATFORM}" | grep Active | awk '{print $2}')
jcpid=$(ps -ef | grep -v "grep" | grep "${SETUP_PROJECT_PLATFORM} " | awk '{print $2}')
writelog "安装平台服务启动!pid is ${jcpid},status is ${project_status}"
}
rollback() { rollback() {
echo "功能未实现!" writelog "功能未实现!"
} }
back_menu() { back_menu() {
echo "功能未实现!" writelog "功能未实现!"
} }
program_deploy() { program_deploy() {
...@@ -444,6 +569,7 @@ program_deploy() { ...@@ -444,6 +569,7 @@ program_deploy() {
setup_mysql setup_mysql
setup_nginx setup_nginx
setup_redis setup_redis
setup_font
setup_rabbitmq setup_rabbitmq
writelog "system setup finish" writelog "system setup finish"
} }
...@@ -468,6 +594,10 @@ function menu() { #显示菜单 ...@@ -468,6 +594,10 @@ function menu() { #显示菜单
4.redis连接配置 4.redis连接配置
5.rabbitmq连接配置
6.nacos连接配置
0.退出 0.退出
...@@ -491,7 +621,9 @@ function submenu() { #显示子菜单 ...@@ -491,7 +621,9 @@ function submenu() { #显示子菜单
5.nginx安装 5.nginx安装
6.全部安装 6.字体安装
7.全部安装
9.更新Linux系统 9.更新Linux系统
...@@ -502,7 +634,6 @@ function submenu() { #显示子菜单 ...@@ -502,7 +634,6 @@ function submenu() { #显示子菜单
eof eof
} }
function num() { #选项 function num() { #选项
read -p "请输入您需要操作的项目: " number read -p "请输入您需要操作的项目: " number
case $number in case $number in
...@@ -515,6 +646,15 @@ function num() { #选项 ...@@ -515,6 +646,15 @@ function num() { #选项
2) 2)
project_deploy project_deploy
;; ;;
3)
mysql_config
;;
4)
redis_config
;;
5)
rabbitmq_config
;;
5) 5)
rollback rollback
;; ;;
...@@ -530,21 +670,29 @@ function subnum() { #选项 ...@@ -530,21 +670,29 @@ function subnum() { #选项
read -p "请输入您需要安装的环境软件: " number read -p "请输入您需要安装的环境软件: " number
case $number in case $number in
1) 1)
#Java
setup_java setup_java
;; ;;
2) 2)
#mysql
setup_mysql setup_mysql
;; ;;
3) 3)
#redis
setup_redis setup_redis
;; ;;
4) 4)
#rabbitmq
setup_rabbitmq setup_rabbitmq
;; ;;
5) 5)
#nginx
setup_nginx setup_nginx
;; ;;
6) 6)
setup_font
;;
7)
program_deploy program_deploy
;; ;;
9) 9)
...@@ -560,13 +708,110 @@ function subnum() { #选项 ...@@ -560,13 +708,110 @@ function subnum() { #选项
esac esac
} }
function mysql_config() { #mysql配置
while true; do
read -p "默认$MYSQL_HOST,请输入数据库连接ip: " ip_address
#空白输入,默认ip
if [ "$ip_address" = "" ]; then
ip_address=$MYSQL_HOST
break
fi
check_ip $ip_address
[ $? -eq 0 ] && break
done
while true; do
read -p "默认端口号$MYSQL_PORT,请输入数据库连接端口: " port
if [ "$port" = "" ]; then
port=$MYSQL_PORT
break
fi
if [[ $port -gt 1025 && $port -lt 65534 ]]; then
break
fi
done
# read -p "默认用户$MYSQL_USER,请输入数据库用户: " db_user
#read -p "默认密码$MYSQL_PASSWORD,请输入数据库密码: " db_password
#验证port
MYSQL_HOST=$ip_address
MYSQL_PORT=$port
#MYSQL_USER=$db_user
#MYSQL_PASSWORD=$db_password
echo "本地数据库连接已经修改为:$MYSQL_HOST $MYSQL_PORT $MYSQL_USER $MYSQL_PASSWORD"
}
function redis_config() { #redis配置 非本机ip 添加nginx 代理,代理的ip为输入的ip
while true; do
read -p "默认$REDIS_HOST,请输入redis连接ip: " ip_address
if [ "$ip_address" = "" ]; then
ip_address=$REDIS_HOST
break
fi
check_ip $ip_address
[ $? -eq 0 ] && break
done
while true; do
read -p "默认端口号$REDIS_PORT,请输入redis连接端口: " port
if [ "$port" = "" ]; then
port=$REDIS_PORT
break
fi
if [[ $port -gt 1025 && $port -lt 65534 ]]; then
writelog "输入的端口号: $port"
break
fi
done
REDIS_HOST=$ip_address
REDIS_PORT=$port
#read -p "默认密码$REDIS_PASSWORD,请输入redis密码: " db_password
writelog "本地redis连接已经修改为:$REDIS_HOST $REDIS_PORT"
}
function rabbitmq_config() { #rabbitmq配置
while true; do
read -p "默认$RABBITMQ_IP,请输入rabbitmq连接ip: " ip_address
check_ip $ip_address
[ $? -eq 0 ] && break
done
writelog "本地rabbitmq连接ip已经修改为:$RABBITMQ_IP "
}
function check_ip() {
local IP=$1
echo $IP
VALID_CHECK=$(echo $IP | awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
if echo $IP | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then
if [ $VALID_CHECK == "yes" ]; then
# echo "IP $IP available!"
return 0
else
# echo "IP $IP not available!"
return 1
fi
else
#echo "IP format error!"
return 1
fi
}
#主函数 #主函数
main() { main() {
if [ -f ${LOCK_FILE} ]; then if [ -f ${LOCK_FILE} ]; then
echo "Deploy is running" && exit writelog "Deploy is running" && exit
fi fi
#判断是否初始安装,如果是,则解压当前文件包到当前目录下
if [ ! -d "./soft" ]; then
writelog "文件夹不存在 解压"
tar -xvf ./publish.tar
else
writelog "文件夹存在"
fi
#获取参数 #获取参数
while getopts h:P:u:p opt; do while getopts h:P:u:p opt; do
case $opt in case $opt in
...@@ -587,7 +832,7 @@ main() { ...@@ -587,7 +832,7 @@ main() {
MYSQL_PASSWORD=$OPTARG MYSQL_PASSWORD=$OPTARG
;; ;;
?) ?)
echo "$opt is an invalid option" writelog "$opt is an invalid option"
;; ;;
esac esac
done done
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment