镜像下载、域名解析、时间同步请点击
之前我们讲解linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目的就是将来我们开发的项目绝大部分情况下都需要部署在Linux系统中。那么在本章节,我们将通过两种方式,来演示项目部署,分别是:手动部署项目 和 基于shell脚本自动部署。
创建一个简单的项目,结构如下所示
项目运行结果
执行package指令,进行打包操作,将当前的SpringBoot项目,打包成jar包
操作步骤
<build> <!--指定jar的名字--> <finalName>helloworld</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
# 清理、打包 跳过测试mvn clean package -Dmaven.test.skip=true
# 运行JAVA -jar xxx.jar
浏览器访问:
http://localhost:8080/hello
将打好的jar包上传至Linux服务器的 /usr/local/App 目录下
启动SpringBoot项目
PS
由于前面安装的Tomcat在启动时,会占用端口号8080,而当前springboot项目我们没有配置端口号,默认也是8080,所以我们要想启动springboot项目,需要把之前运行的Tomcat停止掉
开放端口,确保端口对外开放,可以访问SpringBoot项目
firewall-cmd --zone=public --list-ports
如果防火墙没有开放对应的端口,还需要先开放端口
访问测试
http://192.168.222.135:8080/hello
成功运行项目后的问题
当前我们项目启动的这个窗口被霸屏占用了,如果我们把这个窗口关闭掉(或ctrl+c),当前服务也就访问不到了
解决上述霸屏问题的解决方法就是让部署的项目在后台运行
这个时候我们需要使用到linux中的一个命令 nohup ,接下来,就来介绍一下nohup命令
Command:要执行的命令
Arg:一些参数,可以指定输出文件
&:让命令在后台运行
nohup java -jar boot工程.jar &> hello.log &
上述指令的含义为: 后台运行 java -jar 命令,并将日志输出到hello.log文件
综上所得,要想让当前项目在后台运行,就可以使用以下命令
nohup java -jar helloworld-1.0-SNAPSHOT.jar &> hello.log &
这样的话,我们的项目就已经启动成功了,我们可以通过ps指令,查看到系统的进程
接下来,我们再次访问我们的项目,来看看服务是否可用
这时候可以查看以下hello.log文件是否正常输出日志
停止项目
直接杀死进程:kill -9 pid
前面介绍的项目部署是手动部署,也就是部署过程中的每一步操作都需要我们手动操作。接下来,我们需要再讲解一下项目的自动部署,从而来简化项目部署的操作,那么我们先来整体上了解一下项目自动部署的流程及操作步骤
具体操作步骤如下
①、在Gitee上创建远程仓库,并将本地的项目代码推送到远程仓库中
②、在Linux中安装Git,克隆代码
③、在Linux中安装maven
④、编写Shell脚本(拉取代码、编译、打包、启动)
⑤、为用户授予执行Shell脚本的权限
⑥、执行Shell脚本
1)创建远程仓库
自行创建
2)推送代码到远程仓库
自行推送一个简单示例项目即可
1)Git软件安装
通过yum命令在线安装git,执行如下指令
通过上述指令,安装好git之后,我们就可以通过git --version去验证git的环境
2)Git克隆代码
先切换到指定的目录,如/usr/local,执行如下指令
git clone 要克隆的远程仓库地址(然后输入个人的Git账号密码)
1)官网下载Maven的压缩包
如
Apache-maven-3.5.4-bin.tar.gz,自行选择对应版本号在官网下载即可
2)解压Maven压缩包
自行解压到指定目录即可
tar -zxvf
apache-maven-3.5.4-bin.tar.gz -C 指定目录
3)配置环境变量
在/etc/profile配置文件中配置环境变量
vim /etc/profile
增加如下内容
MAVEN_HOME=/usr/local/apache-maven-3.5.4/PATH=$JAVA_HOMEbin:$PATH:$MAVEN_HOMEbinexport JAVA_HOME PATH MAVEN_HOME
PS:这里面的JAVA_HOME是之前配置的,忽略即可
要让配置的环境变量生效,还需要执行如下指令
source /etc/profile
4)修改maven的settings.xml配置文件
配置本地仓库地址
切换目录
cd /usr/local/apache-maven-3.5.4/conf
编辑setting.xml配置文件
vim setting.conf
在其中增加如下配置,添加本地仓库地址
/usr/local/maven-reposity
同时在标签中,配置阿里云的私服
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>
Shell脚本(shell script),是一种Linux系统中的脚本程序。使用Shell脚本编程跟 JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了
本次测试不作为学习内容,直接使用现成的demo即可
脚本解读
根据上面步骤执行完后,Shell脚本要想正常的执行,还需要给Shell脚本分配执行权限。 由于linux系统是一个多用户的操作系统,并且针对每一个用户,Linux会严格的控制操作权限。接下来,我们就需要介绍一下Linux系统的权限控制
1). chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
2). Linux中的权限分为三种 :读®、写(w)、执行(x)
3). Linux文件权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
4). 只有文件的所有者和超级用户可以修改文件或目录的权限
5). 要执行Shell脚本需要有对此脚本文件的执行权限(x),如果没有则不能执行
解析当前脚本的权限情况
chmod命令可以使用八进制来指定权限(0 - 代表无, 1 - 表示执行x,2 - 写w, 4 - 读r
举例
注意:
三个数字分别代表不同用户的权限
在测试阶段,我们可以给所有的人都赋予执行该shell脚本的权限。所以可以执行如下指令
chmod 777 bootStart.sh
权限解读:
A. 第一个7,代表当前文件所有者root用户,对该文件具有读写执行权限
B. 第二个7,代表当前文件所有者所属组的用户,对该文件具有读写执行权限
C. 第三个7,代表其他用户,对该文件具有读写执行权限
执行该shell版本
注意: 在执行maven指令进行打包时,第一次执行可能会耗时比较长,因为在进行maven工程的打包时,需要到中央仓库下载工程依赖的jar包和插件(可以在settings.xml中配置阿里云私服加速下载)。
启动完成之后,我们可以查看java进程
访问项目
本文转自:
https://www.cnblogs.com/OnlyOnYourself-lzw/p/16519445.html