分享非k8s环境部署:API部署

后台-系统设置-扩展变量-手机广告位-内容正文顶部

API部署

安装常用工具

  sudoyuminstall-yyum-utilswgetvimmtrcurltelentlsofgit

安装jdk

下载jdk

  mkdir-p/opt

  cd/opt

  wgethttp://res.javamall.com.cn/jdk-8u121-linux-x64.tar.gz

解压缩并重命名:

  tar-xzvfjdk-8u121-linux-x64.tar.gz

  mvjdk1.8.0_121/jdk8

配置环境变量:

  vim/etc/profile

在文件的最后配置如下内容:

  JAVA_HOME=/opt/jdk8

  JRE_HOME=/opt/jdk8/jre

  CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

  PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

  exportJAVA_HOMEJRE_HOMECLASS_PATHPATH

  注意可能存在已有配置,请修改为正确的路径

使配置文件生效:

  source/etc/profile

验证

  java-version

  如果不正确,可能需要退出重新登录

安装maven

  cd/opt

  wgethttp://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

  tar-xzvfapache-maven-3.6.3-bin.tar.gz

配置环境变量:

  vim/etc/profile

在文件的最后配置如下内容(增加MAEN_HOME并修改path):

  #其它略

  MAVEN_HOME=/opt/apache-maven-3.6.3

  PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin

  #其它略

  注意可能存在已有配置,请修改为正确的路径

使配置文件生效:

  source/etc/profile

验证

  mvn-v

配置maven私服

  参考《配置maven私服》

clone源码

  请您参考"git部署公钥指南"配置git公钥

  作为规范,我们约定源码全部放在/opt/source目录中,jar放在/opt/server中

  mkdir-p/opt/server

  mkdir-p/opt/source

  cd/opt/source

clone我们需要的源码:

  省略.........

或者

  省略.........

下载b2b2c-config,用feature_7.2.2分支即可

  省略.........

或者

  省略.........

进行初次编译

  cd/opt/source/b2b2c

  mvncleaninstall-DskipTests-fpom.xml

运行API

  配置config-server

配置config-server

  vim/opt/source/b2b2c-config/application-dev.yml

  如果是生产环境则修改application-prod.yml

  具体请参考:配置中心指南

  请配置好数据库、elasticsearch、redis、rabbitmq等这些基础设施

建立其它配置文件

  mkdir-p/opt/server/{config,logs}

  vim/opt/server/config/bootstrap.yml

粘贴如下配置

  spring:

  cloud:

  config:

  uri:http://localhost:8888

  profile:dev

  server:

  tomcat:

  basedir:/home/temp

  上述配置将api的配置中心指为本机

  目录必须为实际存在且不会被自动删除的路径

建立执行脚本

  vim/opt/source/application.properties

粘贴如下配置

  #默认采用本地配置

  server.port=8888

  spring.profiles.active=native

  spring.cloud.config.server.native.search-locations=/opt/source/b2b2c-config

建立如下脚本

  vim/opt/server/start.sh

粘贴如下内容(注意更改branch参数):

  #!/bin/bash

  #版本

  verson=7.2.3

  #要部署的分支

  branch=feature_7.2.3_upgrade

  #源文件存储目录

  source_dir=/opt/source/b2b2c

  #程序运行时目录

  server_dir=/opt/server

  mkdir-p$server_dir"/logs/"

  #要运行的api

  apis=("sba-server""base-api""buyer-api""seller-api""manager-api""consumer")

  #杀死进程

  killone(){

  ps-ef|grepjava|grep$1|grep-v'grep'|awk'{print$2}'|xargskill-9

  echo'停止'$1

  }

  #启动程序

  startone(){

  nohupjava-Xmx512m-Xms256m-Xss256k-jar$1"-"$verson.jar>$server_dir"/logs/"$1".out"2>&1&

  echo'启动'$1

  }

  #默认全部启动

  startall="yes"

  forapi_namein${apis[@]}

  do

  if[["$1"!=""&&"$1"=$api_name&&"$1"!="dontbuild"]]

  then

  startall="no"

  break

  fi

  done

  echo"startallis"$startall

  if[["$startall"="yes"]];then

  #杀死进程

  forapi_namein${apis[@]}

  do

  killone"$api_name"

  echo"$api_namestopsuccess"

  done

  else

  killone"$1"

  fi

  #启动configserver

  cd$server_dir

  #检测端口状态

  checkPort(){

  r=`netstat-ntlp|awk'{print$4}'|grep:$1`

  if["$r"==""]

  then

  return0

  else

  return1

  fi

  }

  #检测configserver状态

  checkPort8888

  #读取状态

  res=`echo$?`

  #判断configserver是否启动,如果未启动则启动

  if["$res"=="0"]

  then

  mv$source_dir"/config-server/target/config-server-"$verson.jar$source_dir

  nohupjava-Xmx512m-Xms256m-Xss256k-jar-Dspring.config.location=/opt/source/application.properties$source_dir"/"config-server-$verson.jar>$server_dir"/logs/config-server.out"2>&1&

  echo"等待configserver启动"

  while["$res"=="0"]

  do

  checkPort8888

  res=`echo$?`

  echo-n"."

  sleep1s

  done

  echo"configserverstartsuccess"

  sleep1s

  else

  echo""

  echo"config-server已经启动"

  fi

  sleep1s

  if["$1"!="dontbuild"]

  then

  #更新源码

  cd$source_dir

  (部分内容已省略....)

  mvninstall-DskipTests-fpom.xml

  rm-rf$server_dir"/*.jar"

  forapi_namein${apis[@]}

  do

  mv$source_dir"/"$api_name"/target/"$api_name"-"$verson.jar$server_dir

  done

  else

  echo"不构建,直接重启"

  fi

  cd$server_dir

  if[["$startall"=="yes"]];then

  forapi_namein${apis[@]}

  do

  startone"$api_name"

  done

  else

  startone"$1"

  fi

  #进度条

  progressBar(){

  label=('|''/''-''\')

  per=$1

  ii=0

  str=''

  myTimes=$2

  text=$3

  letindex=myTimes%4

  #拼接#字

  while[$ii-le$per]

  do

  str=#$str

  letii++

  done

  printf"[%-100s]%d%%%s%s\r"$str$per${label[$index]}$text

  if[[$per==100]];then

  echo

  fi

  }

  #声明所有的服务和端口号,以便检测

  serviceMap["7000"]="base-api"

  serviceMap["7002"]="buyer-api"

  serviceMap["7003"]="seller-api"

  serviceMap["7004"]="admin-api"

  serviceMap["6000"]="consumer"

  serviceMap["7006"]="sba-server"

  totalPer=0

  #是否全部启动成功的标识

  all_is_ok=""

  last_text=''

  times=0

  processNum=0

  processItem=100/6#六个任务中每个任务所占进度

  while:

  do

  all_is_ok="yes"

  progressBar$totalPer$times$last_text

  #100次检查一下

  checked=$(($times%100))

  if[[$checked==0]];then

  forkeyin${!serviceMap[*]};do

  checkPort"$key"

  started_result=`echo$?`

  if["$started_result"=="1"]

  then

  processNum=$(($processNum+1))

  #每启动一个服务进度

  totalPer=$(($processNum*$processItem))

  #显示启动成功的程序

  printf"%-57s%57s\n"${serviceMap[$key]}'已启动'|sed's/[]/-/g'

  #将启动成功的服务移除掉

  unsetserviceMap["$key"]

  fi

  done

  fi

  sleep0.1

  lettimes++

  if[[${#serviceMap[*]}==0]];then

  progressBar1006"全部启动完成"

  break

  fi

  done

进入脚本文件夹中:

  cd/opt/server

更新源码并且部署执行如下脚本:

  shstart.sh

不更新源码直接重启执行如下脚本

  shstart.shdontbuild

更新源码并且重启单个API执行如下脚本

  shstart.shbase-api

  更新源码并且重启单个API启动参数分别为:base-ap/buyer-api/seller-api/mamager-api/consumer

验证

  当配置中心启动成功后,需要访问以下网址查看配置文件是否有误,(ip替换为物理机IP)

  http://ip:8888/a/dev

  全部启动成功后,通过以下网址检查API是否成功。

  http://ip:7000/swagger-ui/

  http://ip:7002/swagger-ui/

  http://ip:7003/swagger-ui/

  http://ip:7004/swagger-ui/

监控检查各服务节点状态

  http://ip:7006

  默认用户名密码:admin/admin

  根据以上内容可以了解到非k8s环境部署的API部署,想了解更多详情,可以持续关注易族智汇javashop

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

后台-系统设置-扩展变量-手机广告位-内容正文底部
留言与评论(共有 0 条评论)
   
验证码: