• 项目部署、


    项目部署

    手工部署项目

    1.打成jar包

    2.上传Linux

    3.使用命令运行程序

    java -jar 包名

    image-20220806141551101

    4.通过自己的ip地址访问网页

    目前程序运行的问题是:

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

    nohup命令:英文名称no hang up(不挂起),用于不挂断地运行指定程序,退出终端不会影响程序的运行

    语法格式:nohup Command[Arg ...][&]

    参数说明:

    Command:要执行的命令

    Arg:一些参数

    &:让命令在后台运行

    举例:

    nohup java -jar boot工程.jar &>hello.log &后台运行java -jar命令 ,并将日志输出到hello.log文件

    5.停止服务

    查找服务,获取进程id

    ps -ef|grep java

    kill -9 进程id

    通过Shell脚本自动部署项目

    1.在Linux中安装Git

    yum list git 列出所有的Git安装包

    yum install 获取的安装包名

    将项目上传至仓库

    在Linux中使用git克隆保存至/usr/local下

    git clone 仓库地址

    2.在Linux中安装Maven

    上传

    解压

    tar -zxvf apache-maven-3.5.4-bin.tar.gz

    打开配置文件配置环境变量

    vim /etc/profile

    在最后一行加入

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

    配置立即生效source /etc/profile

    查看maven版本mvn -version

    image-20220806155043018

    创建本地仓库

    mkdir repo

    进入apache-maven-3.5.4下的conf目录中

    打开settingsd.xml

    配置本地仓库

     /usr/local/repo
    
    • 1

    3.编写Shell脚本(拉去代码,编译,打包,启动)

    bootStart.sh

    #!/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/helloworld
    
    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

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

    chmod

    Linux中权限分为:读(r)、写(w)、执行(x)三种权限

    Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其他用户(Other Users)

    只有文件的所有者和超级用户可以修改文件或目录的权限

    image-20220806160827379

    chomd命令可以使用八进制数来指定权限

    7读+写+执行rwx
    6读+写rw-
    5读+执行r-x
    4只读r–
    3写+执行-wx
    2只写-w-
    1只执行–x
    0

    举例:三位数字代表三位用户

    chmod 777 booStart.sh  为所有用户授予读、写、执行权限
    
    
    • 1
    • 2

    5.执行Shell脚本

    6.设置静态ip

    找到

    /etc/sysconfig/network-scripts/ifcfg-ens33

    打开ifcfg-ens33并修改

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    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=72d73c4d-640a-4295-9eb8-c7a92e727682
    DEVICE=ens33
    ONBOOT=yes
    ZONE=public

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO="static"           #使用静态IP地址,默认为dhcp
    IPADDR="192.168.205.128"     #设置静态IP地址
    NETMASK="255.255.255.0"      #子网掩码
    GATEWAY="192.168.205.2"      #网关地址
    DNS1="192.168.205.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=72d73c4d-640a-4295-9eb8-c7a92e727682
    DEVICE=ens33
    ONBOOT=yes
    ZONE=public
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    重启

    systemctl restart network

  • 相关阅读:
    邮件模板设计要注意哪些事项
    项目管理软件dhtmlxGantt配置教程(十六):如何设置动态化比例
    使用query请求数据出现500的报错
    【C++刷题】优选算法——模拟
    物联网TCP、UDP、CoAP、LwM2M、MQTT协议简单对比
    基地树洞 | 自动化小系列之OS脚本篇
    使用计算组在工具提示中解释度量值
    渗透测试高级技巧(一):分析验签与前端加密
    STM32的SDIO接口详解
    2024年大语言模型的微调
  • 原文地址:https://blog.csdn.net/qq_57907966/article/details/126259685