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

修改部署脚本

parent 8e44723f
......@@ -50,6 +50,7 @@ MYSQL_SERVICE="${SERVICE_PATH}/mysql.service"
RABBITMQ="rabbitmq"
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"
RABBITMQ_IP="127.0.0.1"
RABBITMQ_USER="taxi_mq"
RABBITMQ_PASSWORD="admin@2020"
RABBITMQ_CONF_PATH="/etc/rabbitmq/"
......@@ -67,10 +68,16 @@ CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%H-%M-%S")
NACOS="nacos"
NACOS_HOST="127.0.0.1"
NACOS_FILENAME="nacos-server-2.1.1.tar.gz"
NACOS_SERVICE="${SERVICE_PATH}/${NACOS}.service"
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() {
......@@ -87,8 +94,6 @@ writelog() {
echo ${LOGINFO}
}
check_cpu() {
cpu_info=$(arch)
writelog ${cpu_info}
......@@ -119,10 +124,9 @@ setup_java() {
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 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin" >>/etc/profile
source /etc/profile #使配置立即生效
#检查Java安装和配置
cd $BASEDIR
writelog "setup java finish!"
writelog "JAVA 环境软件安装完成"
}
setup_redis() {
......@@ -161,7 +165,7 @@ WantedBy=multi-user.target
systemctl daemon-reload
systemctl start redis
writelog "setup redis finish"
writelog "REDIS环境软件安装完成!"
}
setup_mysql() {
......@@ -188,7 +192,7 @@ socket=/tmp/mysql.sock
port = ${MYSQL_PORT}
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
max_connections=800
innodb_file_per_table=1
#表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=1
......@@ -269,16 +273,12 @@ setup_rabbitmq() {
rabbitmqctl set_user_tags ${RABBITMQ_USER} administrator # 设置用户角色,分配操作权限
rabbitmqctl set_permissions -p / ${RABBITMQ_USER} ".*" ".*" ".*" # 为用户添加资源权限(授予访问虚拟机根节点的所有权限)
}
setup_nginx() {
writelog "setup nginx"
writelog "stop and remove nginx"
systemctl stop nginx
writelog "centos nginx clear"
yum remove nginx
writelog "nginx depend install"
yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
......@@ -295,7 +295,7 @@ setup_nginx() {
make
make install
cp -a ${BASEDIR}/release/conf/${NGINX}.conf ${NGINX_CONF}
/bin/cp -arf ${BASEDIR}/release/conf/${NGINX}.conf ${NGINX_CONF}
echo "[Unit]
Description=${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() {
PROJECT_NAME=$1
SERVICE=$2
......@@ -331,11 +346,12 @@ clear_deploy() {
rm -rf ${EXECPATH}
rm -f ${NGINX_CONF_PATH}/${PROJECT_NAME}.conf
if [ ! -d ${EXECPATH} ]; then
mkdir -p ${EXECPATH}
chmod -R 755 $EXECPATH
fi
}
init_setup() {
writelog "linux install and update"
......@@ -343,18 +359,32 @@ init_setup() {
yum install -y gcc
yum install -y socat
}
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}
chmod -R 755 $PUBLISH_PATH
fi
if [ ! -d "/mortals/app/data" ]; then
mkdir -p /mortals/app/data
chmod -R 755 /mortals
fi
if [ ! -d "/mortals/app/logs" ]; then
mkdir -p /mortals/app/logs
chmod -R 755 /mortals
writelog "init_deploy finish"
fi
writelog "创建文件目录完成"
}
......@@ -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() {
PROJECT_NAME=$1
systemctl enable ${PROJECT_NAME}
......@@ -394,16 +468,31 @@ start_service_and_nginx() {
}
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_EXECPATH}
mkdir -p ${NACOS_EXECPATH}
writelog "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 3
writelog "${NACOS}_deploy init db..."
writelog " 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} <${NACOS_EXECPATH}/db/nacos.sql
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 1
writelog "NACOS 导入数据库中..."
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} <./db/nacos.sql
writelog "创建NACOS启动服务..."
echo "" >$NACOS_SERVICE
echo "[Unit]" >>$NACOS_SERVICE
echo "Description=nacos" >>$NACOS_SERVICE
......@@ -418,24 +507,60 @@ nacos_deploy() {
echo "" >>$NACOS_SERVICE
echo "[Install]" >>$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 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}')
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() {
echo "功能未实现!"
writelog "功能未实现!"
}
back_menu() {
echo "功能未实现!"
writelog "功能未实现!"
}
program_deploy() {
......@@ -444,6 +569,7 @@ program_deploy() {
setup_mysql
setup_nginx
setup_redis
setup_font
setup_rabbitmq
writelog "system setup finish"
}
......@@ -468,6 +594,10 @@ function menu() { #显示菜单
4.redis连接配置
5.rabbitmq连接配置
6.nacos连接配置
0.退出
......@@ -491,7 +621,9 @@ function submenu() { #显示子菜单
5.nginx安装
6.全部安装
6.字体安装
7.全部安装
9.更新Linux系统
......@@ -502,7 +634,6 @@ function submenu() { #显示子菜单
eof
}
function num() { #选项
read -p "请输入您需要操作的项目: " number
case $number in
......@@ -515,6 +646,15 @@ function num() { #选项
2)
project_deploy
;;
3)
mysql_config
;;
4)
redis_config
;;
5)
rabbitmq_config
;;
5)
rollback
;;
......@@ -530,21 +670,29 @@ function subnum() { #选项
read -p "请输入您需要安装的环境软件: " number
case $number in
1)
#Java
setup_java
;;
2)
#mysql
setup_mysql
;;
3)
#redis
setup_redis
;;
4)
#rabbitmq
setup_rabbitmq
;;
5)
#nginx
setup_nginx
;;
6)
setup_font
;;
7)
program_deploy
;;
9)
......@@ -560,13 +708,110 @@ function subnum() { #选项
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() {
if [ -f ${LOCK_FILE} ]; then
echo "Deploy is running" && exit
writelog "Deploy is running" && exit
fi
#判断是否初始安装,如果是,则解压当前文件包到当前目录下
if [ ! -d "./soft" ]; then
writelog "文件夹不存在 解压"
tar -xvf ./publish.tar
else
writelog "文件夹存在"
fi
#获取参数
while getopts h:P:u:p opt; do
case $opt in
......@@ -587,7 +832,7 @@ main() {
MYSQL_PASSWORD=$OPTARG
;;
?)
echo "$opt is an invalid option"
writelog "$opt is an invalid option"
;;
esac
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