• linux学习(5)—— 项目部署


    将项目部署到linux系统上

    一. 手工部署项目

    1. 在IDEA中将Springboot项目打包为jar包

    2. 将jar包上传到Linux服务器

    ①在/usr/local下新建一个app目录,将项目的jar包放到该目录下

    ②然后在app目录下运行该项目java -jar linux-0.0.1-SNAPSHOT.jar

    之后可以在外部浏览器通过访问http://ip:8080/来访问该项目(要确保项目的端口号在linux上是打开的,即如果项目端口号是8080,则linux系统的8080端口需要是打开的)

    注意:该方式会导致linux控制台被霸占,不能再执行其他操作 

    ③改为后台运行项目,并将日志输出到日志文件 

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

    nohup命令:用于不挂断地运行指定命令,退出终端不会影响程序的运行

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

    参数说明:①Command:要执行的命令;②Arg:一些参数,可以指定输出文件;③&:让命令在后台运行

    举例:nohup java -jar springboot工程.jar &> hello.log & (后台运行java -jar命令,并将日志输出到hello.log文件)

    停止项目

    先查看该项目的进程id:ps -ef|grep java

    通过停止进程来停止项目的运行: kill -9 id(例如:kill -9 22068)

    二. 通过Shell脚本自动部署项目

    1. 在本地将Springboot项目放到远程Git仓库内

    2.  在linux系统中将远程Git仓库内的项目文件克隆到linux中

            将项目克隆到/usr/local目录下,首先进入/usr/local,然后输入命令:git clone git仓库的地址

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

    ①在/usr/local下创建一个sh目录,用于存放shell脚本

    ②在sh目录下创建一个bootStart.sh文件,使用vim命令在文件内添加以下内容:  

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

    之后添加新的项目,只需要替换上面的项目名就行 

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

    我们使用chmod 777 bootStart.sh来为shell脚本赋予权限 

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

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

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

    要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行

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

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

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

    chmod 210 bootstart.sh:为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限

    注意:三位数字分别代表不同用户的权限,第1位表示文件拥有者的权限,第2位表示同组用户的权限,第3位表示其他用户的权限

    5. 执行Shell脚本

    切换到/usr/local/sh目录下,执行以下命令 

    sh bootStart.sh

    6. 设置linux系统的静态ip

    将IP给固定为192.168.153.100

    使用vim命令修改文件/etc/sysconfig/network-scripts/ifcfg-ens33,将其中的内容修改如下: 

    ① 修改为static,使用静态IP地址,默认为dhcp

    BOOTPROTO="static"          

    ②在上面语句下加入下面的语句:

    IPADDR="192.168.32.100"     #设置的静态IP地址(与下图对应,是多少就是多少,这里是32)

    NETMASK="255.255.255.0"     #子网掩码 

    GATEWAY="192.168.32.2"      #网关地址 

    DNS1="192.168.32.2"             #DNS服务器 

    重启网络服务:systemctl restart network

    发现已经连接不上,需要创建新的连接,即在FinalShell再创建新的连接Linux

     之后如果添加新的项目,只需要执行1、2、3、4、5步就可以

    如果启动的是已有的项目,只需要执行第5步

  • 相关阅读:
    双碳时代下,数据中心PUE划红线
    【leetcode】【剑指offer Ⅱ】038. 每日温度
    【微服务】Day02
    steam搬砖项目2023年现状分析,到底还能不能做?
    Spring事务
    基于ssm二手车交易管理系统毕业设计-附源码151159
    Net6 用imagesharp 实现跨平台图片处理并存入oss
    国内乳业龙头『君乐宝』×企企通强强联手,搭建采购供应链管理系统+商城平台双管齐下推动低碳转型
    web应用及微信小程序版本更新检测方案实践
    商业智能BI与业务管理决策思维之三:业务质量分析
  • 原文地址:https://blog.csdn.net/Archer__13/article/details/127673757