您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

项目部署到Linux

时间:2022-07-27 12:48:19  来源:博客园  作者:

镜像下载、域名解析、时间同步请点击

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

 

项目部署

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

3.1、手动部署项目

3.1.1、在IDEA中开发SpringBoot项目并打包成jar包

创建一个简单的项目,结构如下所示

 

项目运行结果

 

执行package指令,进行打包操作,将当前的SpringBoot项目,打包成jar包

操作步骤

  • Step1
 <build>        <!--指定jar的名字-->        <finalName>helloworld</finalName>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build>
  • Step2
# 清理、打包 跳过测试mvn clean package -Dmaven.test.skip=true
  • Step3
# 运行JAVA -jar xxx.jar
  • Step4

浏览器访问:
http://localhost:8080/hello

3.1.2、将jar包上传到Linux并运行

将打好的jar包上传至Linux服务器的 /usr/local/App 目录下

  • mkdir /usr/local/app
  • cd /usr/local/app

启动SpringBoot项目

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

 

PS

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

开放端口,确保端口对外开放,可以访问SpringBoot项目

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

 

如果防火墙没有开放对应的端口,还需要先开放端口

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

访问测试

http://192.168.222.135:8080/hello

 

成功运行项目后的问题

当前我们项目启动的这个窗口被霸屏占用了,如果我们把这个窗口关闭掉(或ctrl+c),当前服务也就访问不到了

3.1.3、手动部署项目优化

解决上述霸屏问题的解决方法就是让部署的项目在后台运行

这个时候我们需要使用到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 &

 

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

 

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

 

这时候可以查看以下hello.log文件是否正常输出日志

停止项目

直接杀死进程:kill -9 pid

 

3.2、基于Shell脚本自动部署

3.2.1、介绍

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

 

具体操作步骤如下

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

②、在Linux中安装Git,克隆代码

③、在Linux中安装maven

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

⑤、为用户授予执行Shell脚本的权限

⑥、执行Shell脚本

3.2.2、推送代码到远程仓库

1)创建远程仓库

自行创建

2)推送代码到远程仓库

自行推送一个简单示例项目即可

3.2.3、Git操作

1)Git软件安装

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

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

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

 

2)Git克隆代码

先切换到指定的目录,如/usr/local,执行如下指令

git clone 要克隆的远程仓库地址(然后输入个人的Git账号密码)

3.2.4、Maven安装

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> 

 

3.2.5、Shell脚本准备

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

本次测试不作为学习内容,直接使用现成的demo即可
脚本解读

3.2.6、Linux权限

根据上面步骤执行完后,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

 

举例

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

注意:

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

  • 第1位表示文件拥有者的权限
  • 第2位表示同组用户的权限
  • 第3位表示其他用户的权限

3.2.7、授权并执行脚本

在测试阶段,我们可以给所有的人都赋予执行该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



Tags:项目部署   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
公司用了六年的 SpringBoot 项目部署方案,稳得一批!
本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作。 profiles指定不同环境的配置 maven-assembly-plugin打发布压...【详细内容】
2024-01-10  Search: 项目部署  点击:(185)  评论:(0)  加入收藏
项目部署到Linux
镜像下载、域名解析、时间同步请点击阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 项目部署之前我们讲解Linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目...【详细内容】
2022-07-27  Search: 项目部署  点击:(493)  评论:(0)  加入收藏
Django项目部署到服务器
1. 安装python3.81.1 安装相关依赖包yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel li...【详细内容】
2021-10-13  Search: 项目部署  点击:(256)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(10)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(26)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(18)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(16)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(61)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(55)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(61)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(89)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(74)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(94)  评论:(0)  加入收藏
站内最新
站内热门
站内头条