centos下快速部署java-react项目

服务器基本安装命令

centos 安装node 12.0

curl --silent --location https://rpm.nodesource.com/setup_12.x | bash -
yum install -y nodejs
node -v



# 自己编译安装node 12.16.1
mkdir download
cd download
wget http://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.gz
tar -zxvf node-v12.16.1-linux-x64.tar.gz 
mv node-v12.16.1-linux-x64 nodejs
cd nodejs/bin   //  切换路径
./node -v 

vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/root/download/nodejs/bin    
source ~/.bash_profile

基本服务器搭建

# jdk 11 
yum install java-11-openjdk-devel.x86_64

# 宝塔
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

# nginx
登录宝塔,进行nginx安装即可

# node 12 
curl --silent --location https://rpm.nodesource.com/setup_12.x | bash -
yum install -y nodejs
node -v

# git
yum install git

# maven  需要自己导包安装,yum安装版本低
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar zxf apache-maven-3.6.3-bin.tar.gz 
mv apache-maven-3.6.3 /usr/local/maven3
vim /etc/profile
export M2_HOME=/usr/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
wq
source /etc/profile
mvn -v
# 更换阿里源,加快下载速度
cd /usr/local/maven3/conf
vim settings.xml

     alimaven
     aliyun maven
     http://maven.aliyun.com/nexus/content/groups/public/
     central

rabbmitMQ


# 安装MQ(erlang与rabbitmq 的版本必须对应)
rpm -ivh erlang-22.3-1.el7.x86_64.rpm
yum install -y rabbitmq-server-3.8.3-1.el7.noarch.rpm
systemctl start rabbitmq-server    #启动
systemctl status rabbitmq-server   #状态
systemctl stop rabbitmq-server     #停止
rabbitmq-plugins enable rabbitmq_management #启用插件

# 修改looker 为空,让所有人可以登录
/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/ebin   rabbmit.app  
 修改为  {loopback_users, []},
# 或者命令行添加用户
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 
# 安装延时插件
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/plugins
scp -r /root/download/rabbitmq_delayed_message_exchange-3.8.0.ez .
# 启动插件
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/sbin
rabbitmq-plugins enable rabbitmq_management  # 管理页面
rabbitmq-plugins enable rabbitmq_delayed_message_exchange # 延时队列
rabbitmq-plugins enable rabbitmq_stomp # stomp协议
# 重启mq
systemctl restart rabbitmq-server
# 打开图形页面,创建新用户
http://47.114.38.114:15672
# 添加 admin用户,设置复杂密码
# 删除guest用户



# 显示所有的插件,每一行一个
rabbitmq-plugins list
# 显示所有的插件,并且显示插件的版本号和描述信息
rabbitmq-plugins list -v
# 显示所有名称含有 "management" 的插件
rabbitmq-plugins list -v management
# 显示所有显示或者隐式启动的插件
rabbitmq-plugins list -e rabbit

rabbitmq-plugins enable [--offline] [--online] {plugin ...}
# --offline 仅仅修改启动的插件文件
# --online 将与正在运行的代理连接失败视为致命错误
# plugin 一个或者多个待启用的插件
# 该命令将启用指定的插件和他们所有依赖的插件

rabbitmq-plugins disable [--offline] [--online] {plugin ...}
# --offline 仅仅修改启动的插件文件
# --online 将与正在运行的代理连接失败视为致命错误
# plugin 一个或者多个待禁用的插件
# 该命令将禁用指定的插件和他们所依赖的插件

rabbitmq-plugin set [--offline] [--online] {plugin ...}
# --offline 仅仅修改启用的插件文件
# --online 将与正在运行的代理连接失败视为致命错误
# plugin 零个或者多个待启用的插件
# 该命令将启用待指定的插件和他们所依赖的插件。和 rabbitmq-plugins enable 不同,该命令忽略了和覆盖了所有已存在的启用的插件。
# rabbitmq-plugins set 没有任何插件参数时,是合法的,表示禁用所有的插件
# rabbitmq-plugins set rabbitmq_management
# 上述命令,表示启用management插件,并且禁用其他所有插件

快速部署脚本

java

#!/bin/bash
# jar包路劲
jarpath="/root/runtime"
# 日志名
logname="XXXX"
# 项目路径
pgpath="xxxxx"
# git地址
gitpath="http://xx.xx.xx.xx:3000/xxx/$pgpath.git"
# 日志文件目录
logpath="/root/logs/$logname"
# jar包备份目录
jarbakpath="/root/jarbak/$pgpath"
# jar包名字
jarname="$pgpath-1.0.jar"

read -p "确定重启( $pgpath )嘛?" flag  if [[ "$flag" != "y" ]];  then  echo "取消"  exit  fi
# 判断,如果当前项目目录下,无对应的项目,从git地址,拉取代码到linux本地服务器
if [ ! -d "/root/$pgpath" ];then  cd ~  git clone $gitpath  read -p "请输入要使用的分支: " branch  git checkout $branch  fi

if [ ! -d "$jarpath" ];then  mkdir -p $jarpath  fi

if [ ! -d "$logpath" ];then  mkdir -p $logpath  fi

if [ ! -d "$jarbakpath" ];then  mkdir -p $jarbakpath  fi

echo ================================= echo $logname备份自动化部署脚本启动 echo =================================

echo 进入~/$pgpath cd ~/$pgpath

echo 开始pull版本 git pull origin master

echo 开始编译文件  mvn clean package -Dmaven.test.skip=true

echo 进入编译完成文件 cd ~/$pgpath/target

echo 结束以往进程  ps -ef | grep $jarname | grep -v grep | awk '{print $2}' | xargs kill -9

#echo 复制日志文件内容到新的文件中  #cp $logpath/$logname.log $logpath/$logname_`date +%Y%m%d%H%M%S`.log

echo 备份文件  cp $jarpath/$jarname $jarbakpath/$jarname.`date +%Y%m%d%H%M%S`

echo 删除以往文件 rm -rf $jarpath/$jarname

echo 移动文件  mv $jarname $jarpath/

#echo 清空日志  #echo /dev/null > $logpath/$logname.log

echo 重启服务器  nohup java -jar $JAVA_OPTS_PAY $jarpath/$jarname --spring.profiles.active=prod >>$logpath/$logname.log 2>&1 &

tail -100f $logpath/$logname.log

java版本回退

#!/bin/bash 

jarpath="/root/runtime"

logname="xxx"

pgpath="xxx"

logpath="/root/logs/$logname"

jarbakpath="/root/jarbak/$pgpath"

jarname="$pgpath-1.0.jar"

ls -l $jarbakpath

read -p "请输入要回滚的 ($pgpath)  jar包的后缀:" version

echo "要回滚到的版本为:" $version

read -p "确定回滚( $pgpath )嘛?" flag
if [[ "$flag" != "y" ]];
  then
   echo "取消"
   exit
fi

if [ ! -d "$jarpath" ];then
        mkdir -p $jarpath
fi

if [ ! -d "$logpath" ];then
        mkdir -p $logpath
fi

if [ ! -d "$jarbakpath" ];then
        mkdir -p $jarbakpath
fi

echo ================================= 
echo $logname自动化回滚脚本启动 
echo ================================= 

#echo 复制日志文件内容到新的文件中
#cp $logpath/$logname.log $logpath/$logname\_`date +%Y%m%d%H%M%S `.log

#echo 清空日志
#echo /dev/null > $logpath/$logname.log

echo 移动需要回滚的jar包到运行目录下
cp -f $jarbakpath/$jarname.$version $jarpath/$jarname

echo 结束以往进程
ps -ef | grep $jarname | grep -v grep | awk '{print $2}' | xargs kill -9

echo 重启服务器
nohup java -jar $JAVA_OPTS_PAY $jarpath/$jarname --spring.profiles.active=prod  >>$logpath/$logname.log 2>&1 &

tail -100f $logpath/$logname.log

前端

#!/bin/bash

hostname="xxxxx"

webpath="/www/wwwroot/$hostname"

pgpath="xxxxxx"

gitpath="http://xx.xx.xx.xx:3000/xxxx/$pgpath.git"

echo ================================= echo Web自动化部署脚本启动 echo =================================

if [ ! -d "/root/$pgpath" ];then  cd ~  git clone $gitpath  fi

if [ ! -d "$webpath" ];then  mkdir -p $webpath  fi

echo 进入~/$pgpath cd ~/$pgpath 
echo 强制更新线上最新  
git fetch --all  git reset --hard origin/master  
#echo 替换url.js  
cp -f ~/url.js ~/$pgpath/src/pages/url.js 
 echo 开始编译文件  npm run build

echo 删除以往文件 rm -rf $webpath/assets 
 rm -rf $webpath/css
  rm -rf $webpath/js  
rm -rf $webpath/index.html  
rm -rf $webpath/favicon.png

echo 移动文件  mv build/* $webpath/ echo 部署完成

你可能感兴趣的:(centos下快速部署java-react项目)