zoukankan      html  css  js  c++  java
  • linux小白成长之路9————打包部署SpringBoot项目

    【内容指引】
    SpringBoot项目介绍;
    打包SpringBoot项目:
    1.pom.xml;
    2.application.properties配置;
    3.application-dev.properties配置;
    4.application-prod.properties配置;
    5.data.sql;
    6.打包设置。
    将jar包部署到linux服务器:
    1.将jar包从Mac上传到远程linux服务器;
    2.在Mysql中创建数据库实例;
    3.以生产配置的方式运行jar包。
    相关技巧
    1.删除数据库;
    2.查看进程;
    3.根据端口查进程;
    4.杀死指定进程 。

    一、SpringBoot项目介绍

    本例用于演示打包部署的java项目有如下特点:
    1.采用jar包(而不是war包的方式)的方式打包;
    2.双配置:开发环境采用内置的内存数据库h2,生产环境采用Mysql数据库。前两篇已经在服务器中用Docker的方式安装了Mysql。

    二、打包SpringBoot项目

    1.pom.xml

    需要特别说明的配置如下:
    打包方式

    <packaging>jar</packaging>

    数据库相关依赖
    依赖JPA、h2数据库、Mysql数据库

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>

    编译插件

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>

    以上配置都在“云开发”平台生成项目初始化代码时设定好了,无须额外修改。

    2.application.properties配置

    默认启用开发配置"dev"。打包时改为“prod”,启用生产配置。

    #Profile设置
    spring.profiles.active=dev

    3.application-dev.properties配置

    开发配置保持默认即可,无特殊说明。

    4.application-prod.properties配置

    需要注意的配置如下:
    JPA配置
    与前面Docker中运行的Mysql容器一致,这里设置数据库名为“pscms”,用户名为“root”,密码为“123456”

    #JPA
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/pscms?useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.jpa.hibernate.ddl-auto=update

    端口
    Tomcat端口(server.port)以及应用监控端口(management.port)不要与目标服务器上已用的端口号冲突了(必要的情况下,还需要在目标服务器的防火墙中允许这两个端口).

    其它配置不用修改,保持“云开发”平台初始化的生产配置即可。

    5.data.sql

    这里是为Spring Security初始化两个用户的sql脚本,注意,表名一律用小写字母,否则可能发布时会报找不到表的异常。

    6.打包设置

    在"IntelliJ IDEA"的顶部右边选择“Edit Configurations”:

    添加一个Maven配置:

    取一个名称,如“cms”,然后在Command line中输入“clean package”,如下图所示:

    如下图,点击“运行”按钮,执行打包:

    注意
    由于启用了生产环境的配置,打包前需要Mysql数据库实例“pscms”是可以正常访问的,否则会导致编译失败。

    会生成一个名为"cms-0.0.1.SNAPSHOT.jar"的jar包,其中“cms”是本示范项目的项目名:

    三、将jar包部署到linux服务器

    1.将jar包从Mac上传到远程linux服务器

    可以先将本项目target目录中的jar包重命名为"cms.jar":

    右键拷贝jar包本地地址:

    本例不上传到远程服务器,而是CentOS虚拟机。
    查询指导虚拟机的ip是“192.168.10.121”,用户名是"parallels",桌面地址是“/home/parallels/Desktop”,在Mac终端中用scp拷贝jar包到虚拟机中(从虚拟机的linux终端上传jar包到远程linux服务器的方法相同)。
    指令语法:scp -r 本地jar包路径 远程服务器用户名@服务器IP:远程存放jar包的路径
    指令:

    scp -r /Users/mac.manon/workspace/JavaProjects/mobi_weiapp_cms/target/cms.jar parallels@192.168.10.121:/home/parallels/Desktop

    现在虚拟机桌面就有了cms.jar:

    2.在Mysql中创建数据库实例:

    在SpringBoot的生产配置中,我们需要连接的Mysql数据库实例为“pscms”,这里,我们在虚拟机中,登录docker创建数据库,否则运行jar报无法连接的异常。步骤如下:

    登录容器:

    docker exec -it first-mysql bash

    登录Mysql:

    mysql -u root -p

    输入密码:
    创建数据库:

    CREATE DATABASE `pscms` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

    创建成功后退出mysql(quit)、退出容器(exit)。

    3.以生产配置的方式运行jar包

    指令:

    java -jar /home/parallels/Desktop/cms.jar --spring.profiles.active=prod

    现在可以在CentOS本地火狐浏览器中用http://localhost:8888访问了,如果在Mac中访问则将localhost换为虚拟机的ip(如无法访问,则可能是防火墙的原因)。

    四、相关技巧

    1.删除数据库

    指令:

    DROP DATABASE `pscms`;

    2.查看进程

    如查看java的相关的进程
    指令:

    ps -ef|grep java


    如下图,我们看到cms.jar的进程为30894

    3.根据端口查进程

    如果用方法2查询没找到cms.jar的进程时,我们可以根据该程序占用的端口“8888”查询。
    指令:

    netstat -lntp 8888

    4.杀死指定进程

    指令:

    kill -9 进程号

    杀死进程后,发布的SpringBoot项目就无法访问了。

    H-UI——做体验最好的快应用UI库,让快应用开发就像搭积木!
  • 相关阅读:
    JSP取得绝对路径
    scrapy-redis
    孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
    孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库
    孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库
    孤荷凌寒自学python第五十五天初识MongoDb数据库
    孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
    孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录
    孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录
    孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库
  • 原文地址:https://www.cnblogs.com/cloud-dev/p/linux-xiao-bai-cheng-zhang-zhi-lu9da-bao-bu-shuSpr.html
Copyright © 2011-2022 走看看