项目部署到Linux

镜像下载、域名解析、时间同步请点击阿里云开源镜像站

项目部署

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

3.1、手动部署项目

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

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

[En]

Create a simple project with the following structure

项目部署到Linux

项目运行结果

项目部署到Linux

执行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
&#x6E05;&#x7406;&#x3001;&#x6253;&#x5305; &#x8DF3;&#x8FC7;&#x6D4B;&#x8BD5;
mvn clean package -Dmaven.test.skip=true
  • Step3
&#x8FD0;&#x884C;
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
  • 运行结果

项目部署到Linux

PS

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

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

firewall-cmd –zone=public –list-ports

项目部署到Linux

如果防火墙没有打开相应的端口,也需要先打开端口。

[En]

If the firewall does not open the corresponding port, you also need to open the port first.

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

访问测试

http://192.168.222.135:8080/hello

项目部署到Linux

成功运行项目后的问题

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

3.1.3、手动部署项目优化

上述问题的解决方案是让部署的项目在后台运行。

[En]

The solution to the above problem is to let the deployed project run in the background.

这个时候我们需要使用到linux中的一个命令 nohup ,接下来,就来介绍一下nohup命令

  • nohup命令:英文全称 no hang up(不挂断),用于不挂断地运行指定命令,退出终端不会影响程序的运行
  • 语法格式: nohup Command [ Arg … ][&]
  • 参数说明:

Command:要执行的命令

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

&:让命令在后台运行

  • 举例:

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

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

总之,要让当前项目在后台运行,可以使用以下命令

[En]

To sum up, to get the current project running in the background, you can use the following command

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

项目部署到Linux

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

项目部署到Linux

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

[En]

Next, we visit our project again to see if the service is available

项目部署到Linux

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

停止项目

直接杀死进程:kill -9 pid

项目部署到Linux

3.2、基于Shell脚本自动部署

3.2.1、介绍

前面描述的项目部署是手动部署,即部署过程中的每一步都需要我们手动完成。接下来,我们需要解释一下项目的自动部署,以简化项目部署的操作,那么我们来整体来看看项目自动部署的流程和步骤。

[En]

The project deployment described earlier is manual deployment, that is, every step in the deployment process requires us to do it manually. Next, we need to explain the automatic deployment of the project, so as to simplify the operation of the project deployment, so let’s take a look at the process and steps of automatic deployment of the project as a whole.

项目部署到Linux

具体操作步骤如下

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

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

③、在Linux中安装maven

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

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

⑥、执行Shell脚本

3.2.2、推送代码到远程仓库

1)创建远程仓库

自行创建

2)推送代码到远程仓库

只需自己推一个简单的示例项目即可。

[En]

Just push a simple example project by yourself.

3.2.3、Git操作

1)Git软件安装

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

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

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

项目部署到Linux

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_HOME\bin:$PATH:$MAVEN_HOME\bin
export JAVA_HOME PATH MAVEN_HOME

PS:这里面的JAVA_HOME是之前配置的,忽略即可

项目部署到Linux

要使配置的环境变量生效,还需要执行以下指令

[En]

For the configured environment variable to take effect, you also need to execute the following instructions

source /etc/profile

4)修改maven的settings.xml配置文件

配置本地仓库地址

切换目录

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

编辑setting.xml配置文件

vim setting.conf

添加以下配置以添加本地仓库地址

[En]

Add the following configuration to add the local warehouse address

/usr/local/maven-reposity

项目部署到Linux

同时,在标签中配置阿里云的私人服务器。

[En]

At the same time, configure Ali Yun’s private server in the tag.

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

项目部署到Linux

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中的权限分为三种 :读(r)、写(w)、执行(x)

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

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

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

项目部署到Linux

解析当前脚本的权限情况

项目部署到Linux

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

项目部署到Linux

举例

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

注意:

这三个数字代表不同用户的权限。

[En]

The three numbers represent the permissions of different users.

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

3.2.7、授权并执行脚本

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

chmod 777 bootStart.sh

权限解读:

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

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

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

执行该shell版本

项目部署到Linux

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

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

项目部署到Linux

访问项目

项目部署到Linux

本文转自:https://www.cnblogs.com/OnlyOnYourself-lzw/p/16519445.html

Original: https://www.cnblogs.com/helong-123/p/16523961.html
Author: 萌褚
Title: 项目部署到Linux

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/522988/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球