Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
setup-project-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
setup-project-platform
Commits
1da222bb
Commit
1da222bb
authored
Oct 23, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改部署脚本
parent
8e44723f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
286 additions
and
41 deletions
+286
-41
product-deploy.sh
product-deploy.sh
+286
-41
No files found.
product-deploy.sh
View file @
1da222bb
...
...
@@ -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=
4
00
max_connections=
8
00
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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment