• Linux系统环境下项目部署


    1.项目部署-手工部署项目(繁琐,效率低下)

    1.1 在IDEA中开发SpringBoot项目,并打包成jar包

    双击package,进行打包
    在这里插入图片描述
    打包成功
    在这里插入图片描述

    1.2将jar包上传到Linux服务器

    创建目录,将项目jar包放到此目录

    mkdir /usr/local/app  
    
    • 1

    使用以下命令进行上传

    rz
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    1.3 启动springboot程序

    java -jar HelloWorld-1.0-SNAPSHOT.jar
    
    • 1

    在这里插入图片描述

    1.4外部浏览器,访问,检查8080端口防火墙是否打开

    firewall-cmd --zone=public --list-ports
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    1.5改为后台运行SpringBoot程序,并将日志输出到日志文件

    目前程序运行的问题

    • 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
    • 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息

    nohup命令:英文全称no hangup (不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行
    语法格式: nohup Command [ Arg ..][&]
    参数说明:
    Command:要执行的命令
    Arg:一.些参数,可以指定输出文件
    &:让命令在后台运行

    举例:
    后台运行java -jar命令,并将日志输出到hello.log文件

    nohup java -jar boot工程.jar &> hello.log &
    
    nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &>hello.log &
    
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    1.6停止SpringBoot程序

    ps -ef | grep java
    
    
    • 1
    • 2

    在这里插入图片描述
    使用以下命令杀死进程

    kill -9 88835
    
    • 1

    在这里插入图片描述

    2.项目部署-通过shell脚本自动部署项目

    2.1 操作步骤概述

    在这里插入图片描述

    2.2 Step1-在Linux中安装安装git

    列出git安装包

    yum list git
    
    • 1

    在线安装git

    yum install git
    
    
    • 1
    • 2

    2.3 Step2-使用Git克隆代码

    在这里插入图片描述

     cd /usr/local
    git clone https://gitee.com/jlxqjx/demo.git
    
    • 1
    • 2

    在这里插入图片描述

    首先要配置公钥:

    1.配置帐户和密码

    git config --global user.name "Your gitee Name"
    git config --global user.email "email@example.com"
    
    • 1
    • 2

    2.查看配置是否生效

    git config --list
    
    • 1

    3.先在本地生成ssh key,生成公钥和私钥,后续在gitee中需要用到

    ssh-keygen -t rsa -C "your_email@youremail.com"
    
    • 1

    4.确认路径按1次回车,提示:Enter passphrase(输入密码),不用输密码再按2次回车即可。生成的密钥存放路径 /root/.ssh/id_rsa

    1. 3、id_rsa:私钥 ,id_rsa.pub:公钥
    cat /root/.ssh/id_rsa.pub
    
    • 1

    6.打开gitee 配置SSH即可
    7.拉取代码

    cd /usr/local/
    git clone 代码链接
    
    • 1
    • 2

    2.4Step3-在Linux中安装安装maven

    在这里插入图片描述

    1.将maven安装包上传到Linux,在Linux中安装maven

    apache-maven-3.5.4-bin.tar

    tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
    
    • 1

    2.修改配置文件,加入如下内容

    vim /etc/profile
    
    export MAVEN_HOME=/usr/local/apache-maven-3.5.4
    export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    source /etc/profile #重新加载一下
    mvn -version
    
    • 1
    • 2

    3.修改配置文件内容如下
    在这里插入图片描述

    mkdir repo
    
    vim /usr/local/apache-maven-3.5.4/conf/settings.xml
    <localRepository>/usr/local/repo</localRepository>
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.5 Step4-编写shell脚本

    在这里插入图片描述
    在这里插入图片描述

    #!/bin/sh
    echo =================================
    echo  自动化部署脚本启动
    echo =================================
    
    echo 停止原来运行中的工程
    APP_NAME=HelloWorld
    
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Stop Process...'
        kill -15 $tpid
    fi
    sleep 2
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Kill Process!'
        kill -9 $tpid
    else
        echo 'Stop Success!'
    fi
    
    echo 准备从Git仓库拉取最新代码
    cd /usr/local/liunx-test
    echo 开始从Git仓库拉取最新代码
    git pull
    echo 代码拉取完成
    
    echo 开始打包
    output=`mvn clean package -Dmaven.test.skip=true`
    
    cd target
    
    echo 启动项目
    nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
    echo 项目启动完成
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    2.6 Step5-为用户授予执行Shell脚本的权限

    在这里插入图片描述
    在这里插入图片描述
    举例

    chmod 777 bootStart.sh 为所有用户授予读、写、执行权限

    chmod 755 bootStart.sh为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限

    chmod 210 bootStart.sh为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
    在这里插入图片描述

    2.7 Step6-执行Shell脚本

    ./bootStart.sh
    
    • 1

    在这里插入图片描述

    2.8 git本地修改代码,在上交gitee

    在这里插入图片描述
    在这里插入图片描述

    2.9 设置静态ip

    这里是动态ip
    在这里插入图片描述

    在这里插入图片描述
    修改文件(这个文件不同系统不一样)/etc/sysconfig/network-scripts/ifcfg-ens33,内容如下:(ifcfg-ens33这个不同版本系统可能不同)
    在这里插入图片描述

    vim ifcfg-ens33
    
    • 1

    在这里插入图片描述

    TYPE="Ethernet"
    PROXY_ METHOD="none"
    BROWSER_ _ONLY="no"
    
    BOOTPROTO= "static"  				#使用静态IP地址,默认为dhcp 
    IPADDR="192.168.19.0"			#设置的静态IP地址  和自己虚拟机里的要一致,即上图框出来的
    NETMASK="255.255.255.0"				#子网掩码
    GATEWAY="192.168.19.2"				#网关地址
    DNS1="192.168.19.2"				# DNS服务器
    
    DEFROUTE="yes"
    IPV4_ FAILURE_ FATAL="no"
    IPV6INIT="yes"
    IPV6_ _AUTOCONF="yes"
    IPV6_ DEFROUTE="yes"
    IPV6_ _FAILURE_ _FATAL="no" 
    IPV6_ ADDR_ GEN_ MODE="stable-privacy"
    NAME= "ens33"
    UUID="95b614cd- 79b0- 4755- be8d-99f1cca7271b"
    DEVICE="ens33"
    ONBOOT= "yes"						#是否开机启用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述
    在这里插入图片描述
    重启网络服务

    systemctl restart network
    
    • 1

    重新建立一个连接
    在这里插入图片描述

    在这里插入图片描述

    2.10 总体流程(环境配置已经配置好)

    1.使用Git克隆代码

    cd /usr/local
    git clone https://gitee.com/jlxqjx/demo.git
    
    • 1
    • 2

    在这里插入图片描述

    2.编写shell脚本

    在这里插入图片描述

    //这里已创建此文件夹
    cd sh
    
    vim bootStart.sh
    
    • 1
    • 2
    • 3
    • 4

    输入i进行编辑,esc进入命令编辑:wq保存

    #!/bin/sh
    echo =================================
    echo  自动化部署脚本启动
    echo =================================
    
    echo 停止原来运行中的工程
    APP_NAME=HelloWorld
    
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Stop Process...'
        kill -15 $tpid
    fi
    sleep 2
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Kill Process!'
        kill -9 $tpid
    else
        echo 'Stop Success!'
    fi
    
    echo 准备从Git仓库拉取最新代码
    cd /usr/local/liunx-test
    echo 开始从Git仓库拉取最新代码
    git pull
    echo 代码拉取完成
    
    echo 开始打包
    output=`mvn clean package -Dmaven.test.skip=true`
    
    cd target
    
    echo 启动项目
    nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
    echo 项目启动完成
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    在这里插入图片描述

    在这里插入图片描述

    3.为用户授予执行Shell脚本的权限

    chmod 777 bootStart.sh
    
    • 1

    在这里插入图片描述

    4.Step6-执行Shell脚本

    ./bootStart.sh
    
    • 1

    在这里插入图片描述

    5.运行成功

    在这里插入图片描述

    6.查看日志

    //找到日志文件所在的位置
    find / -name demo.log
    
    • 1
    • 2

    在这里插入图片描述

    7. git本地修改代码,在上交gitee

    在这里插入图片描述

    ./bootStart.sh
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    URP渲染管线实战教程系列 之URP渲染管线实战解密(一)
    Linux系统中rpm命令用法详解
    【c#】关于web api发布
    催款神器!博途分期付款程序:分多个阶段定时锁机实现时间锁,再利用随机数生成动态密码解锁!适用于S71200/1500PLC
    C语言 strxfrm()实例讲解
    UVa 762 - We Ship Cheap
    【回眸】Linux知识串讲复习(上)
    MySQL学习笔记5
    比较研究测井预测:遗传算法与神经网络(Matlab代码实现)
    3-2 中阶API示范
  • 原文地址:https://blog.csdn.net/weixin_44953928/article/details/125451860