《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)

简介: 《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)

1.5 安装lrzsz

lrzsz 是用于在Linux系统中文件上传下载的软件。,Linux的远程连接工具有很多,而finalShell只是其中的一种,而还有很多的远程连接工具并没有上传下载的功能,这个时候就需要依赖于lrzsz这个软件了。


对于lrzsz的安装,我们需要通过第三种软件安装方式yum来进行安装。这里,我们先对yum做一个简单介绍。


Yum: (Yellow dog Updater,Modified),是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。


安装lrzsz的步骤如下:


1). 搜索lrzsz安装包


yum list lrzsz


image.png

2). 在线安装lrzsz


yum install lrzsz.x86_64

3). 测试


在命令行中输入 rz , 就会自动打开一个文件选择的窗口,然后选择要上传的文件。


image.png


yum拓展知识:


1). 如果在不更改软件来源的情况下,是需要联网才能使用yum的,那么我们安装的软件是从哪儿下载的呢,这里就涉及到一个概念: yum源。



2). 我们可以通过一个指令,来检查当前的yum源


image.png


从图中,我们可以看到我们安装的 CentOS7 采用的是网易的163yum源。



3). 网络 yum 源配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名为"*.repo"


image.png


可以看到,该目录下有 7 个 yum 配置文件,通常情况下 CentOS-Base.repo 文件生效。



4). 添加阿里云yum源


A. 先通过 yum install wget ,安装wget命令


B. 备份默认的网易163的yum源,执行指令 :


切换目录: cd /etc/yum.repos.d/


创建备份目录: mkdir bak


移动现有的yum源文件到bak: mv *.repo bak/


C. 下载阿里云的yum源


wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


D. 执行命令,重新生成cache


yum clean all


yum makecache


E. 再次查看yum源


image.png


之后,我们通过yum指令安装软件,就是从阿里云下载的。


2. 项目部署


之前我们讲解Linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目的就是将来我们开发的项目绝大部分情况下都需要部署在Linux系统中。那么在本章节,我们将通过两种方式,来演示项目部署,分别是:手动部署项目 和 基于shell脚本自动部署。


2.1 手动部署项目

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


项目是一个很简单的springboot项目(可以自己开发一个,也可以直接导入资料中提供的),结构如下:


image.png


可以在本地的idea中先启动当前的demo工程,然后访问一下,看看工程是否正常访问。


image.png


执行package指令,进行打包操作,将当前的springboot项目,打成一个jar包。


image.png


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


通过 rz 指令,将打好的jar包上传至Linux服务器的 /usr/local/app 目录下。 先执行指令创建app目录。


A. 在/usr/local下创建目录app
mkdir /usr/local/app
B. 切换到app目录下
cd /usr/local/app
C. 执行指令,进行jar包上传
rz


image.png

此时这个jar包就上传到 /usr/local/app 目录了。


image.png


3). 启动SpringBoot程序


由于我们的项目已经打成jar包上传上来到Linux服务器,我们只需要运行这个jar包项目就启动起来了,所以只需要执行如下指令即可:


java -jar helloworld-1.0-SNAPSHOT.jar

image.png

注意: 由于前面安装的Tomcat在启动时,会占用端口号8080,而当前springboot项目我们没有配置端口号,默认也是8080,所以我们要想启动springboot项目,需要把之前运行的Tomcat停止掉。


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


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

image.png


如果防火墙没有放开8080端口,还需要放开对应的端口号,执行如下指令:


firewall-cmd --zone=public --add-port=8080/tcp --permanent

5). 访问测试


http://192.168.138.130:8080/hello


image.png


6). 后台运行项目


当前这个demo工程我们已经部署成功了,并且我们也可以访问项目了。但是这个工程目前是存在问题的,就是当前我们项目启动的这个窗口被霸屏占用了,如果我们把这个窗口关闭掉(或ctrl+c),当前服务也就访问不到了。


目前程序运行的问题:


A. 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行


B. 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息


后台运行程序:


要想让我们部署的项目进行后台运行,这个时候我们需要使用到linux中的一个命令 nohup ,接下来,就来介绍一下nohup命令。


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


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


参数说明:


Command:要执行的命令


Arg:一些参数,可以指定输出文件


&:让命令在后台运行


举例:


nohup java -jar boot工程.jar &> hello.log &


上述指令的含义为: 后台运行 java -jar 命令,并将日志输出到hello.log文件


那么经过上面的介绍,我们可以推测中,我们要想让当前部署的项目后台运行,就可以使用下面的指令:


nohup java -jar helloworld-1.0-SNAPSHOT.jar &> hello.log &


image.png

这样的话,我们的项目就已经启动成功了,我们可以通过ps指令,查看到系统的进程。


image.png


接下来,我们再次访问我们的项目,来看看服务是否可用。


image.png


7). 停止SpringBoot项目

查看进程,然后杀进程


image.png

2.2 基于Shell脚本自动部署

2.2.1 介绍

前面介绍的项目部署是手动部署,也就是部署过程中的每一步操作都需要我们手动操作。接下来,我们需要再讲解一下项目的自动部署,从而来简化项目部署的操作,那么我们先来整体上了解一下项目自动部署的流程及操作步骤。


image.png


操作步骤如下:


1). 在Gitee上创建远程仓库,并将本地的项目代码推送到远程仓库中


2). 在Linux中安装Git,克隆代码


3). 在Linux中安装maven


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


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


6). 执行Shell脚本


2.2.2 推送代码到远程

这部分操作,大家只需要参考之前讲解的Git,来完成helloworld工程代码推送即可。


A. 创建远程仓库


image.png


B. 将idea中的代码提交并推送到远程仓库


image.png


2.2.3 Git操作

1). Git软件安装


通过yum命令在线安装git,执行如下指令:


yum list git    列出git安装包
yum install git   在线安装git

通过上述指令,安装好git之后,我们就可以通过 git --version去验证git的环境。


image.png


2). Git克隆代码


cd /usr/local/
git clone https://gitee.com/ChuanZhiBoKe/helloworld.git

image.png


2.2.4 Maven安装

由于我们的工程是maven工程,我们要想进行项目的编译打包,需要用到maven的指令,所以需要安装maven。具体操作步骤如下:


1). 上传资料中提供的maven的安装包


通过rz指令上传课程资料中的maven安装包


image.png


2). 解压maven安装包到/usr/local目录


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


image.png

3). 在/etc/profile配置文件中配置环境变量


vim /etc/profile
修改配置文件,进入到命令模式,按G切换到最后一行,按a/i/o进入插入模式,然后在最后加入如下内容 :
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
然后按ESC进入到命令模式,输入 :wq 保存并退出

image.png


要想让配置的环境变量生效,还需要执行如下指令:


source /etc/profile


image.png

4). 修改maven的settings.xml配置文件,配置本地仓库地址


A. 切换目录


cd /usr/local/apache-maven-3.5.4/conf

B. 编辑settings.xml配置文件


vim settings.xml

在其中增加如下配置,配置本地仓库地址:

<localRepository>/usr/local/repo</localRepository>

image.png

并在settings.xml中的标签中,配置阿里云的私服(选做):


<mirror> 
    <id>alimaven</id> 
    <mirrorOf>central</mirrorOf> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

image.png


2.2.5 Shell脚本准备

Shell脚本(shell script),是一种Linux系统中的脚本程序。使用Shell脚本编程跟 JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。


对于Shell脚本编写不作为本课程重点内容,直接使用课程资料中提供的脚本文件bootStart.sh即可。


在/usr/local/目录下创建一个目录 sh(mkdir sh),并将shell脚本上传到该目录下。或者直接在sh目录下创建一个脚本bootStart.sh,然后将资料中的bootStart.sh文件打开,内容拷贝过来即可。


image.png


脚本解读:


image.png


2.2.6 Linux权限

前面我们已经把Shell脚本准备好了,但是Shell脚本要想正常的执行,还需要给Shell脚本分配执行权限。 由于linux系统是一个多用户的操作系统,并且针对每一个用户,Linux会严格的控制操作权限。接下来,我们就需要介绍一下Linux系统的权限控制。


1). chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令


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


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


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


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


Linux系统中权限描述如下:


image.png


解析当前脚本的权限情况:


image.png


chmod命令可以使用八进制数来指定权限(0 - 代表无 , 1 - 执行x , 2 - 写w , 4 - 读r):

image.png

举例:


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

注意:


三个数字分别代表不同用户的权限


第1位表示文件拥有者的权限

第2位表示同组用户的权限

第3位表示其他用户的权限

2.2.7 授权并执行脚本

在测试阶段,我们可以给所有的人都赋予执行该shell脚本的权限。所以可以执行如下指令:


chmod 777 bootStart.sh

注:很明显就是白色变成绿色说明有权限。

image.png


权限解读:


A. 第一个7,代表当前文件所有者root用户,对该文件具有读写执行权限;


B. 第二个7,代表当前文件所有者所属组的用户,对该文件具有读写执行权限;


B. 第三个7,代表其他用户,对该文件具有读写执行权限;


执行该shell脚本:


image.png


注意: 在执行maven指令进行打包时,第一次执行可能会耗时比较长,因为在进行maven工程的打包时,需要到中央仓库下载工程依赖的jar包和插件(可以在settings.xml中配置阿里云私服加速下载)。


启动完成之后, 我们可以查看java进程:


image.png


访问项目:


image.png


2.2.8 设置静态IP

设置静态IP可以看我的博客:超详细设置静态IP教程

相关文章
|
1月前
|
Cloud Native Java C++
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
文章介绍如何在Spring Boot 3中利用GraalVM将Java应用程序编译成独立的本机二进制文件,从而提高启动速度、减少内存占用,并实现不依赖JVM运行。
140 1
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
|
1月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
121 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
3月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
52 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
1月前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
54 2
Springboot+shiro,完整教程,带你学会shiro
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
216 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
80 1
springboot的缓存和redis缓存,入门级别教程
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
1月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
78 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
1月前
|
存储 JSON 算法
JWT令牌基础教程 全方位带你剖析JWT令牌,在Springboot中使用JWT技术体系,完成拦截器的实现 Interceptor (后附源码)
文章介绍了JWT令牌的基础教程,包括其应用场景、组成部分、生成和校验方法,并在Springboot中使用JWT技术体系完成拦截器的实现。
51 0
JWT令牌基础教程 全方位带你剖析JWT令牌,在Springboot中使用JWT技术体系,完成拦截器的实现 Interceptor (后附源码)