项目本地前后台已经联通 ,前端已经部署到阿里云的nginx上:

今天部署后端 ,项目后端使用springboot  mybits mysql redis开发 ,github地址: https://github.com/lilelife/webapp

springboot 内置tomcat  jetty所以打包jar 直接java- jar包就行 

因为是多 module开发 两个包 ,一个common  一个userService服务  ,多模块开发需要注意指明模块之间的依赖关系

spring boot多模块的意义 springboot多模块打包部署_jar

项目完整结构如下。

spring boot多模块的意义 springboot多模块打包部署_spring_02

其中 common只是存储实体类或工具类,所以其pom文件中不需要加入打包插件 ,即不包含 <build></build>。

而UserService 是包含controller的springboot 主main函数的服务,需要打包,其pom 插件如下:

<build>
        <finalName>UserService</finalName>
        <plugins>
            <!-- 编码和编译和JDK版本 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>  <!-- 所需要的依赖包都打进来-->
                            <goal>build-info</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.lile.SpringbootApplication</mainClass>  <!--指定主入口 main函数-->
                    <addResources>false</addResources>
                </configuration>
            </plugin>
            <!--mybits generator  -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>


        </plugins>
    </build>

父pom需要加入maven打包插件 ,内容如下;

<build>
        <plugins>
           <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
        </plugins>

总结就是, 父pom 和 包含springboot的mian函数的模块在pom中需要加入打包插件,其他的工具类的模块不需要。

启动工程,测试查看模块之间的调用是否正常。

打包:

maven 中 主工程目录下lifecycle-> 先clean ,->package

spring boot多模块的意义 springboot多模块打包部署_spring boot多模块的意义_03

  这里 的Lifecycle 和plugins的区别是 lifecycle周期更长 使用这个就行了。

打包显示 :Error:(43,66) java: -source 1.6 中不支持 lambda 表达式

spring boot多模块的意义 springboot多模块打包部署_jar_04

设置 language为1.8 

要注意 项目多余的import 类 需要删除 ,不然打包时候会包找不到该类

spring boot多模块的意义 springboot多模块打包部署_java_05

打包成功:

spring boot多模块的意义 springboot多模块打包部署_java_06

springboot 模块的 target目录下查看:

spring boot多模块的意义 springboot多模块打包部署_spring_07

 

部署到阿里云服务器上,

服务器安装 jdk 1.8 

创建目录 

cd  /usr

mkdir webapp 

chown 777 webapp 

上传jar包

此时可以 java -jar UserService.jar 运行 测试

spring boot多模块的意义 springboot多模块打包部署_java_08

部署成功。

阿里云添加安全端口 

spring boot多模块的意义 springboot多模块打包部署_spring_09

访问:

spring boot多模块的意义 springboot多模块打包部署_java_10

2、shell脚本启动

java -jar bootdo.jar 启动的话 控制台关闭就关闭

使用 java -jar XXX.jar &    // 窗口关闭停止  & 表示后台

nohup java -jar XXX.jar &  // 不挂断运行 窗口 账户退出都运行。

nohup java -jar XXX.jar >temp.txt &    //输出内容重定向到temp.txt中 

定义 shell脚本

touch w.sh

vim  w.sh

#i   编写

#!/bin/sh
 
APP_NAME=product-service
#jar包路径
JAR_PATH='/usr/webapp'
#jar名称
JAR_NAME=UserService.jar
#日志路径
LOG_PATH='/usr/webapp/logs'
#PID  代表是PID文件
PID=$JAR_NAME\.pid
 
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}
 
#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0    
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}
 
#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> $APP_NAME is already running PID=${pid} <<<"
  else
    nohup java -Xms256m -Xmx512m -jar $JAR_PATH/$JAR_NAME >> $LOG_PATH/$APP_NAME.log 2>&1 &
    echo $! > $PID
    echo ">>> start $APP_NAME successed PID=$! <<<"
   fi
  }
 
#停止方法
stop(){
  #is_exist
  pidf=$(cat $PID)
  #echo "$pidf" 
  echo ">>> PID = $pidf begin kill $pidf <<<"
  kill $pidf
  rm -rf $PID
  sleep 2
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> PID = $pid begin kill -9 $pid  <<<"
    kill -9  $pid
    sleep 2
    echo ">>> $APP_NAME process stopped <<<" 
  else
    echo ">>> $APP_NAME is not running <<<"
  fi 
}
 
#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> $APP_NAME is running PID is ${pid} <<<"
  else
    echo ">>> $APP_NAME is not running <<<"
  fi
}
 
#重启
restart(){
  stop
  start
}
 
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac
exit 0

使用 sh  w.sh start|stop|restart  启动 停止 重启

日志在 logs 目录,需要给权限 

mkdir logs 

chown 777 logs/

spring boot多模块的意义 springboot多模块打包部署_spring_11

成功。