【Linux学习】05-2Linux上部署项目

Linux(B站黑马)学习笔记

01Linux初识与安装
02Linux基础命令
03Linux用户和权限
04Linux实用操作
05-1Linux上安装部署各类软件
05-2Linux上部署项目


文章目录

  • Linux(B站黑马)学习笔记
  • 前言
  • 05-2Linux上部署项目
  • 部署Springboot项目
    • 手工部署
    • 通过Shell脚本自动部署项目
  • 注:


前言

Linux(B站黑马)学习笔记 05-2Linux上部署项目


05-2Linux上部署项目

部署Springboot项目

案例项目:瑞吉外卖

手工部署

  1. 在IDEA中将开发的SpringBoot项目并打成jar包

执行maven中的package命令

注意:如果打包前已经有target目录执行打包前建议先执行clean命令,确保我们打包的时候是一个干净的环境

  1. 将jar包上传到Linux服务器
mkdir /usr/local/app    创建目录,可以将项目jar包放到此目录

输入rz命令,打开文件上传界面

  1. 在Linux项目中运行该项目jar包
java -jar reggie-0.0.1-SNAPSHOT.jar

注意:Linux要安装JDK才能成功运行,版本要一致。另外Springboot内嵌了Tomcat,Linux安装了Tomcat且开着的话如果与项目内使用同一端口会造成冲突。

  1. 检查防火墙,确保8080端口对外开放,访问SpringBoot项目

CentOS系统默认开启了防火墙,阻止外部网络流量访问系统内部

所以,如果想要正常使用,需要对8080端口进行放行

放行有2种操作方式:

  1. 关闭防火墙

  2. 配置防火墙规则,放行端口

# 以下操作2选一即可
# 方式1:关闭防火墙
systemctl stop firewalld        # 关闭防火墙
systemctl disable firewalld        # 停止防火墙开机自启# 方式2:放行8080端口的外部访问
firewall-cmd --add-port=8080/tcp --permanent    # --add-port=8080/tcp表示放行8080端口的tcp访问,--permanent表示永久生效
firewall-cmd --reload                # 重新载入防火墙规则使其生效

方便起见,建议同学们选择方式1,直接关闭防火墙一劳永逸

且防火墙的配置非常复杂

  1. 测试访问

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

目前程序运行的问题:程序在终端采用霸屏形式运行,关闭终端程序也跟着关闭了

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

nohup java -jar boot工程.jar &>日志文件.log &   后台运行java -jar命令,并将日志输出到日志文件
nohup java -Xms32m -Xmx64m -jar boot工程.jar &>日志文件.log &
  • nohup: 表示忽略挂断信号,保持程序在后台运行。
  • java: 运行Java程序的命令。
  • -Xms32m -Xmx64m: 设置Java虚拟机的初始堆大小为32MB,最大堆大小为64MB。
  • -jar boot工程.jar: 指定要运行的Java程序的JAR文件路径。
  • &>日志文件.log: 将标准输出和标准错误重定向到日志文件.log文件中。
  • &: 将程序放入后台运行。

  1. 停止SpringBoot程序

停止springboot程序需要通过杀进程的方式,找到对应的进程杀掉就行

ps -ef | gref 'java -jar'    查看进程
kill -9 "进程号"    杀死进程     

通过Shell脚本自动部署项目

操作步骤:

  1. 在Linux中安装Git

  2. 在Linux中安装maven

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

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

  5. 执行shell脚本

在Linux中安装Git、maven请看:【Linux学习】05-1Linux上安装部署各类软件

  1. 使用Git克隆代码

  1. 编写Shell脚本
#!/bin/sh
echo ======================================
echo   自动化部署脚本启动
echo ======================================echo 停止原来运行中的工程
APP_NAME=reggietpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho '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} ]; thenecho 'Kill Process...'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉去最新代码
cd /usr/local/reggieecho 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar reggie-0.0.1-SNAPSHOT.jar &> reggie.log &
echo 项目启动完成

此脚本其实就是自动执行杀掉运行中的进程,再进入到本地git仓库中从远程下拉代码自动打包执行。

  1. 在Linux中编辑此脚本

执行 vim bookStart.sh 后手动将脚本内容复制进去。

  1. 为用户授权

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

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

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

  1. 执行脚本文件
./bookStart.sh    # 执行脚本文件

跟踪查看日志文件

tail -f /usr/local/reggie/target/reggie.log   # 跟踪查看日志文件

至此,项目成功通过shell脚本实现在Linux自动部署


注:

该内容是根据B站黑马程序员学习时所记,相关资料可在B站查询:黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/149621.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot】多环境配置和启动

环境分类,可以分为 本地环境、测试环境、生产环境等,通过对不同环境配置内容,来实现对不同环境做不同的事情。 SpringBoot 项目,通过 application-xxx.yml 添加不同的后缀来区分配置文件,启动时候通过后缀启动即可。 …

JavaScript系列从入门到精通系列第十五篇:JavaScript中函数的实参介绍返回值介绍以及函数的立即执行

文章目录 一:函数的参数 1:形参如何定义 2:形参的使用规则 二:函数的返回值 1:函数返回值如何定义 2:函数返回值种类 三:实参的任意性 1:方法可以作为实参 2:将匿…

OpenCV C++ Look Up Table(查找表)

OpenCV C Look Up Table(查找表) 引言 在图像处理和计算机视觉中,查找表(Look Up Table, LUT)是一种非常高效和实用的方法,用于快速地映射或更改图像的颜色和像素值。LUT 能够极大地提高图像处理算法的执…

【AI视野·今日Robot 机器人论文速览 第四十九期】Fri, 6 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Fri, 6 Oct 2023 Totally 29 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚ContactGen, 基于生成模型的抓取手势生成,类人五指手。(from 伊利诺伊大学 香槟) 数据集:GRAB da…

五种雷达波束模式简介及其应用场景

图1 雷达天线方向图一览 一、铅笔光束——Pencil beam: 方位角和仰角都很窄的光束(像铅笔一样细);用于三维雷达,如仪表雷达、天气雷达和防空雷达。 二、扇形波束——Fan beam 方位角非常窄(接近1至2)&am…

【AI视野·今日NLP 自然语言处理论文速览 四十九期】Fri, 6 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Fri, 6 Oct 2023 Totally 44 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers MathCoder: Seamless Code Integration in LLMs for Enhanced Mathematical Reasoning Authors Ke Wang, Houxi…

socket.error: [Errno 10049]错误

今天在pycharm运行rl_server_no_training.py欲启动服务器时&#xff0c;却出现如下错误 Traceback (most recent call last):File "xxx/rl_server_no_training.py", line 333, in <module>main()File "xxx/rl_server_no_training.py", line 326, in…

Cocos Creator3.8 项目实战(六)Combobox控件的实现和使用

在cocoscreator 中&#xff0c;没有Combobox控件&#xff0c;无奈之下只能自己动手写一个。 ⚠️ 文末附 ComboBox.ts 、ComboBoxItem.ts 完整源码&#xff0c; 可直接拿去使用。 实现原理&#xff1a; 1、Combobox 背景图background 是一个sprite 控件&#xff0c;上面放了一…

医院PACS系统源码 PACS系统源码

医用软件中的影像归档与传输系统软件&#xff08;Picture Archiving and Communication System&#xff0c;简称PACS&#xff09;是一种用于存储、管理和传输医学影像数据的系统。其主要功能包括&#xff1a; 影像存储&#xff1a;PACS可以将医学影像数据以数字化的形式存储在服…

A*算法和Dijkstra

A*算法 https://www.redblobgames.com/pathfinding/a-star/introduction.html这是个宝藏网页&#xff0c;https://www.redblobgames.com/pathfinding/a-star/introduction.html&#xff0c;里边的图可以一步一步演示&#xff01; A*算法 个人理解FGH&#xff0c;F是总距离&a…

浅谈wor2vec,RNN,LSTM,Transfermer之间的关系

浅谈wor2vec&#xff0c;RNN&#xff0c;LSTM&#xff0c;Transfermer之间的关系 今天博主谈一谈wor2vec&#xff0c;RNN&#xff0c;LSTM&#xff0c;Transfermer这些方法之间的关系。 首先&#xff0c;我先做一个定位&#xff0c;其实Transfermer是RNN&#xff0c;LSTM&…

初识jmeter及简单使用

目录 1、打开页面&#xff1a; 2、添加线程组&#xff1a; 3、线程组中设置参数&#xff1a; 4、添加请求 5、添加一个http请求后&#xff0c;设置请求内容 6、添加察看结果树 7、执行&#xff0c;查看结果 一般步骤是&#xff1a;在测试计划下面新建一个线程组&#xf…

C# - Opencv应用(1) 之VS下环境配置详解

C# - Opencv应用&#xff08;1&#xff09; 之VS下环境配置详解 有时候&#xff0c;单纯c#做前端时会联合C实现的dll来落地某些功能由于有时候会用C - Opencv实现算法后封装成dll&#xff0c;但是有时候会感觉麻烦&#xff0c;不如直接通过C#直接调用Opencv在此慢慢总结下C# -…

Linux CentOS7 vim寄存器

计算机中通常所说的寄存器Register一般指的是CPU中的寄存器&#xff0c;用来暂存CPU处理所需要的指令、数据等。 vim中同样也有寄存器&#xff0c;使用的方式和CPU非常类似。 vim中的寄存器(register)作用和windows中的剪切板类似&#xff0c;不过vim中的寄存器不止一个&…

汽车驾驶 - 四梁六柱是什么

汽车的四梁六柱指的是车辆的两个前纵梁&#xff0c;两个后纵梁和ABC柱。虽然不像车辆上的发动机变速箱这些部件出镜率那么高&#xff0c;但这几个部位的重要作用可一点都不含糊。一辆车在碰撞时能够受力起到保护左右的就是四梁六柱&#xff0c;对我们汽车的安全性起到至关重要的…

二叉树经典OJ题

二叉树的层序遍历 1.题目2.图文分析3.代码演示 1.题目 2.图文分析 3.代码演示

Spring框架数据访问

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

java Spring Boot在配置文件中关闭热部署

之前更大家一起搭建了一个热部署的开发环境 但是 大家要清楚一个情况 我们线上程序运行突然内部发生变化这是不可能的。 所以 他就只会对我们开发环境有效 是否开启 我们可以通过 application配置文件来完成 我这里是yml格式的 参考代码如下 spring:devtools:restart:enabled…

Flow Chart 的中文意思是什么?请说出自然界中河流的三种流动方式。事件驱动是什么?

目录 Flow Chart 的中文意思是什么? 请说出自然界中河流的三种流动方式。 事件驱动是什么? 请介绍一下 亚特兰大这座城市 Flow Chart 的中文意思是什么? 流程图 请说出自然界中河流的三种流动方式。 自然界中的河流可以以多种不同的方式流动&#xff0c;以下是其中三…

理解C++强制类型转换

理解C强制类型转换 文章目录 理解C强制类型转换理解C强制转换运算符1 static_cast1.1. static_cast用于内置数据类型之间的转换1.2 用于指针之间的转换 2. const_cast2.1示例12.2 示例2————this指针 3.reinterpret_cast4.dynamic_cast C认为C风格的类型转换过于松散&#x…