【重难点】【Linux 03】Linux 部署 SpringBoot 项目的完全步骤

【重难点】【Linux 03】Linux 部署 SpringBoot 项目的完全步骤,第1张

【重难点】【Linux 03】Linux 部署 SpringBoot 项目的完全步骤 【重难点】【Linux 03】Linux 部署项目的大致步骤

文章目录
  • 【重难点】【Linux 03】Linux 部署项目的大致步骤
  • 一、Linux 部署项目的大致步骤
    • 1.下载 CentOS 镜像
    • 2.VMware 安装 CentOS
    • 3.安装使用 MobaXterm
    • 4.整合 JDK
    • 5.部署数据库
    • 6.打包前端 Vue 项目
    • 7.打包后端 SpringBoot 项目
    • 8.Linux 部署项目
    • 9.部署后端项目
    • 10.启动项目

一、Linux 部署项目的大致步骤 1.下载 CentOS 镜像

省略了打开国内镜像的步骤

选择后缀为 64-dva1.iso 的文件进行下载

2.VMware 安装 CentOS

省略了下载安装 VMware 的步骤

打开 VMware,点击创建新的虚拟机,选择典型安装,进入下一步

NEXT

任意填写,NEXT

NEXT

自己看着办,NEXT

一般无需自定义,且安装完成后都可以进行修改,点击完成即可

然后等待初始化,初始化完成后会进入安装向导

不需要任何修改,开始安装,需要挺长一段时间的

安装完成后会重启,然后进入系统登录页面


点击 Not listed,输入用户名 root 密码 root 登录


接着进行一些配置,更改网络连接为桥接模式

打开终端,输入命令查看网络连接信息

nmcli connection show


可以查看 NAME(联网代号),UUID(识别码),TYPE(网卡类型),DEVICE(网卡名称)

输入命令测试网络是否连通(肯定是不通的)

ping baidu.com

输入命令启动 ens33 网络接口

nmcli connection up ens33

输入命令设置网络获取方式为自动获取 IP

nmcli connection modify ens33 connection.autoconnect yes ipv4.method auto

此时网络应该连通,但是接着需要给虚拟机配置固定 IP

点击 VMware 菜单栏里的 “编辑”,打开 “虚拟网络编辑器”

进行如图所示的配置,其中 “已桥接至” 下拉菜单选择主机当前使用的网络适配器

主机当前使用的网络适配器在如下界面查看

在虚拟机终端中输入命令修改 ifcfg-ens33 文件,(IP 地址)

vim /etc/sysconfig/network-scripts/ifcfg-ens33

输入命令停用 ens33 连接

nmcli connection down ens33

输入命令启动 ens33 连接

nmcli connection up ens33

输入命令查看 IP 地址

ifconfig

配置已生效

最后系统的时区记得修改,这里就不详细讲解了

3.安装使用 MobaXterm

去官网下载 MobaXterm,有免费版的,正常安装使用即可,无需过多配置

打开 MobaXterm

进入用户管理界面


注意,Names 是钥匙名,Username 是 CentOS 的用户名,Password 也是 CentOS 用户对应的密码

点击 OK

双击开始连接

连接成功

4.整合 JDK

去官网下载 JDK 8,选择 x64 Compressed Archive

将下载好后的压缩包上传至 /usr/local/src 文件夹下

输入命令解压

tar -xvf jdk-8u301-linux-x64.tar.gz

输入命令编辑 profile 文件、配置 JDK 环境变量

vim /etc/profile

输入命令读取并执行修改后的 profile

source /etc/profile

输入命令测试 JDK 配置是否成功

java -version

至此,JDK 整合完毕

5.部署数据库

输入命令安装 MariaDB

yum install mariadb-server

输入 y 确认安装,后面出现 warning 或者其它提示,输入 y 继续安装即可


安装完成

输入命令启动 MariaDB 服务

systemctl start mariadb

输入命令启动 MariaDB 初始化向导

mysql_secure_installation


测试数据库功能





部分数据库相关的命令

mysql_secure_installation mysql		安全配置向导
systemctl start mariadb				启动数据库服务
systemctl restart mariadb			重启数据库服务
systemctl stop mariadb				关闭数据库服务
systemctl enablemariadb				设定开机自启
systemctl disable mariadb			关闭开机自启

配置 Linux 防火墙策略,开放端口以便进行远程连接

部分防火墙相关的命令

systemctl start firewalld.service								开启防火墙服务
systemctl stop firewalld.service								关闭防火墙服务
systemctl enable firewalld.service								开启防火墙开机自启
systemctl disable firewalld.service								关闭防火墙开机自启
firewall-cmd --reload											重启防火墙
firewall-cmd --state											检查防火墙启动状态
firewall-cmd --list-ports 										检查防火墙开放的端口
firewall-cmd --query-port 3306/tcp 								检查 3306 端口是否开放
firewall-cmd --zone=public --add-port=3306/tcp --permanent		开放 3306 端口	--zone 表示作用域	
firewall-cmd --zone=public --remove-port=3306/tcp --permanent	关闭 3306 端口	--permanent 表示永久生效,否则重启后失效

主机远程连接数据库测试,我这里使用的是 Navicat,读者可以选择自己熟悉的工具进行连接

连接成功,查看数据表

我们可以看到之前我们自己修改的数据

至此,MariaDB 整合成功

接下来我们要将我们的数据库文件导入

还是跟上传 JDK 压缩包一样的步骤,将.sql 文件上传,然后连接数据库,读取并执行 .sql 文件

远程查看数据库

至此,数据库成功部署

6.打包前端 Vue 项目

前端向后端发起请求时,在实际开发中服务器都是通过域名的方式访问,所以需要将前端请求的前缀统一改为域名

通过 build 的方式将前端项目打包编译,编译为浏览器可以识别的静态资源文件


项目会被打包放在前端项目源文件目录下的 dist 文件夹中


将 dist 文件夹整个复制到 Nginx 的安装根目录下

配置 nginx.config

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

	#配置前端代理 www.dormitory.com
	server {
	    #端口
		listen 80;
		#绑定域名
		server_name www.dormitory.com;

		location / {
		    #文件路径
			root  dist;
			#首页
			index index.html;
		}
	}
}

配置本机 hosts,路径为 C:WindowsSystem32driversetc

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
#127.0.0.1       activate.navicat.com

127.0.0.1         www.dormitory.com

实际生效的只有最后一行

在地址栏地址栏输入 www.dormitory.com 即可访问前端页面

但是前端项目并没有部署完成,我们只是在 Windows 系统下测试一下,最终我们要部署到 Linux 系统

7.打包后端 SpringBoot 项目

写一个 PortController 用于端口测试


先使用 maven 自带的 install 工具打包端口为 8881 的项目

生成的 jar 包会在 target 文件夹里,需要将其移动出去,否则在进行下一次打包时会被覆盖掉

进行第二次打包,将端口号改为 8882

同样,将其移动出去

为了方便区分,我们将这两个 jar 包的名字对应修改为它们各自的端口号

配置 nginx.config

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

	#配置前端代理 www.dormitory.com
	server {
	    #端口
		listen 80;
		#绑定域名
		server_name www.dormitory.com;

		location / {
		    #文件路径
			root  dist;
			#首页
			index index.html;
		}
	}

    #配置后台服务器集群
    upstream tomcats{
        server 127.0.0.1:8881;
        server 127.0.0.1:8882;
    }

    #配置后端代理 manage.jt.com
    server {
        listen 80;
        server_name back.dormitory.com;

        location / {
            proxy_pass http://tomcats;
        }
    }
}

配置 hosts

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
#127.0.0.1       activate.navicat.com

127.0.0.1	www.dormitory.com

127.0.0.1	back.dormitory.com

运行 jar 包

然后以同样的方式运行 8882.jar

在浏览器地址栏输入 www.dormitory.com 发送登录请求,测试前后端能否正常交互

登录成功,前后端交互正常

并且,两台服务器交替处理请求,Nginx 负载均衡也正常


至此,后端项目测试成功。和前端项目一样,后端项目并没有部署完成,我们只是在 Windows 系统下测试一下,最终我们要部署到 Linux 系统

8.Linux 部署项目

我们先将需要的文件准备好

测试时我们用的是主机,但是项目部署是要部署到远程服务器的,我们使用虚拟机作为服务器,所以要将本机的 hosts 和即将上传至 Linux 的 nginx.conf 的配置做出一些调整

将 127.0.0.1 改为虚拟机的 IP

安装 Nginx 之前,我们先要为其准备环境

安装 Nginx 需要先将官网下载的源码进行编译,依赖 gcc 环境。我们不清楚有没有 gcc,安装测试一下

yum install gcc-c++

PCRE(Perl Compatible Regular expressions)是一个 Perl 库,包括 Perl 兼容的正则表达式库。Nginx 的 HTTP 模块使用 PCRE 来解析正则表达式

yum install -y pcre pcre-devel

-y 表示不询问是否安装,后面其它的安装都将使用这个参数,简化 *** 作

zlib 库提供了很多种压缩和解压缩的方式,Nginx 使用 zlib 对 HTTP 包的内容进行 gzip

yum install -y zlib zli-devel

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。Nginx 不仅支持 HTTP 协议,还支持 HTTPS(即在 SSL 协议上传输 HTTP)

yum install -y openssl openssl-devel

至此,环境准备完成,接着我们上传 Nginx 压缩包,然后解压

tar -zxvf nginx-1.21.3.tar.gz

进入解压目录

cd nginx-1.21.3

执行编译

./configure

执行 make

make

执行 make install

make install

输入命令查找 Nginx 工作目录

whereis nginx

跳转到 Nginx 工作目录下的 sbin 目录中

执行 Nginx 命令进行测试

./nginx				启动
./nginx -s reload	重启
./nginx -s stop		关闭

测试无误,上传前端静态资源 dist

覆盖 nginx.conf,拖动即可,无需进行任何确认 *** 作

至此,Nginx 安装配置完成

9.部署后端项目

在 /usr/local/src 文件夹下新建 jar 文件夹


将 8881.jar 和 8882.jar 上传至 jar 文件夹下


至此后端项目部署完成

10.启动项目
  1. 启动防火墙
  2. 开放 22、80、3306、8881、8882 端口
  3. 重启防火墙
  4. 启动数据库服务
  5. 启动 nginx

systemctl start firewalld.service
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8881/tcp --permanent
firewall-cmd --zone=public --add-port=8882/tcp --permanent
firewall-cmd --reload
systemctl start mariadb
cd /usr/local/nginx/sbin
./nginx

在 jar 文件夹下创建启动脚本 start.sh

#!/bin/sh
nohup java -jar 8881.jar => 8881.log &
nohup java -jar 8882.jar => 8882.log &
  • nohup(no hang up,不挂起),用于在系统后台不挂断地运行命令,退出中断不会影响程序的运行
  • => 8881.log 表示将文件输出(日志)保存在 8881.log 中,如果不指定,会输出到 nohup.out 中
  • & 表示该进程在后台运行

运行脚本

sh start.sh

查看日志

cat 8881.log
cat 8882.log

在主机远程访问 www.dormitory.com 进行测试





访问成功

以上就是 Linux 部署 SpringBoot 项目的完全步骤

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3998365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存