SpringBoot完整项目部署流程(软件安装-前后端部署)

news/2024/5/17 5:28:41/文章来源:https://blog.csdn.net/qq_51495235/article/details/128509276

SpringBoot完整项目部署流程

安装Jdk

使用XTFP工具将jdk的二进制发布包上传到Linux

在这里插入图片描述

解压安装包

tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local

解压完毕

在这里插入图片描述

配置环境变量,使用vim命令修改 /etc/profile文件,在文件末尾加入如下配置

JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH

重新加载profile文件,使更改的配置立即生效,命令为

source /etc/profile

检查安装是否成功,命令为

java -version

在这里插入图片描述

安装Tomcat

使用XTFP工具将tomcat的二进制发布包上传到Linux

在这里插入图片描述

解压安装包,命令为

tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local

解压完成

在这里插入图片描述

进入Tomcat的bin目录启动服务,命令

在这里插入图片描述

sh startup.sh

或者

./startup.sh

在这里插入图片描述

验证Tomcat启动是否成功

  • 查看启动日志
more /usr/local/apache-tomcat-7.0.57/logs/catalina.out 

在这里插入图片描述

tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out 

在这里插入图片描述

  • 查看进程
ps -ef | grep tomcat

在这里插入图片描述

防火墙操作

  • 查看防火墙操作
firewall-cmd --state

或者

systemctl status firewalld

在这里插入图片描述

  • 暂时关闭防火墙
systemctl stop firewalld
  • 永久关闭防火墙
systemctl disable firewalld
  • 开启防火墙
systemctl start firewalld
  • 查看所有打开的端口
netstat -anp
  • 查询指定端口是否已开
firewall-cmd --query-port=666/tcp
  • 开放指定端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
  • 移除指定端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
  • 立即生效
firewall-cmd --reload
  • 查看开放的端口
firewall-cmd --zone=public --list-ports

开放8080端口,并访问

在这里插入图片描述

在这里插入图片描述

Redis安装

Redis安装(Linux环境只考虑)

下载地址:Redis

1. 下载安装最新版的gcc编译器

安装C语言的编译环境

yum install centos-release-scl scl-utils-buildyum install -y devtoolset-8-toolchainscl enable devtoolset-8 bash

测试 gcc版本

gcc --version

2. 下载redis-6.2.1.tar.gz放/opt/soft目录

解压缩

tar -zxvf redis-6.2.1.tar.gz

进入目录 执行make命令

cd redis-6.2.1make

如果没有准备好C语言编译环境,make 会报错—Jemalloc/jemalloc.h:没有那个文件

执行命令解决

make distclean

在redis-6.2.1目录下再次执行make命令(只是编译好)

跳过make test 继续执行: make install

安装目录/usr/local/bin

查看默认安装目录:

redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何

redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲

redis-check-dump:修复有问题的dump.rdb文件

redis-sentinel:Redis集群使用

redis-server:Redis服务器启动命令

redis-cli:客户端,操作入口

3. 前台启动(不推荐)

前台启动,命令行窗口不能关闭,否则服务器停止

4. 后台启动(推荐)

备份redis.conf

拷贝一份redis.conf到其他目录

cp  /opt/redis-3.2.5/redis.conf  /myredis

后台启动设置daemonize no改成yes

修改redis.conf(128行)文件将里面的daemonize no改成 yes,让服务在后台启动

启动Redis

redis-server/myredis/redis.conf

用客户端访问:redis-cli

Redis关闭

单实例关闭

redis-cli shutdown

想要远程连接,修改配置文件

yes改为no
在这里插入图片描述
可视化工具连接
修改配置文件
注释掉bind 127.0.0.1
在这里插入图片描述
重启服务
测试连接
在这里插入图片描述
成功!

安装Mysql

检测系统当前安装MySQL数据库

检查当前系统中安装的所有软件

rpm -qa

查询当前系统中名称带mysql的软件

rpm -qa | grep mysql

查询当前系统中安装的名称带mariadb的软件

rpm -qa | grep mariadb

在这里插入图片描述

卸载已经安装的冲突软件

rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64

MySQL安装包上传到Linux并解压到指定目录

mkdir /usr/local/mysqltar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql

在这里插入图片描述

进入mysql目录准备安装

先进行升级

yum update

依次执行下列命令

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpmrpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpmyum install net-toolsrpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

启动mysql

查看mysql服务状态

systemctl status mysqld

启动mysql服务状态

systemctl start mysqld

开机启动

systemctl enable mysqld

查看已经启动的服务

netstat -tunlpnetstat -tunlp | grep mysql

查看mysql的进程

ps -ef |grep mysql

在这里插入图片描述

登录MySQL数据库,查阅临时密码

查看文件内容

cat /var/log/mysqld.log

查看文件内容包含password的行信息

cat /var/log/mysqld.log | grep password

在这里插入图片描述


登录MySQL,修改密码,开放访问权限

mysql -u root -p 临时密码

修改密码

set global validate_password_length=4;      #设置密码长度最低数
set global validate_password_policy=LOW;	   #设置密码安全等级低		
set password=password('root');			   #设置密码为rootgrant all on *.* to 'root'@'%'identified by 'root'; #开启访问权限flush privileges;

在这里插入图片描述

开放端口
查看开放的端口号

firewall-cmd --list-all

设置开放的端口号

firewall-cmd --add-service=http --permanentfirewall-cmd --add-port=3306/tcp --permanent

重启防火墙

firewall-cmd --reload

修改通配符为%

use mysql;select Host,User from user;update user set host = '%' where user ='root';

远程连接测试

在这里插入图片描述

安装Irzsz

yum install lrzsz.x86_64

在这里插入图片描述

输入

rz

在这里插入图片描述

安装Git

yum list gityum install git

在这里插入图片描述

在这里插入图片描述

安装Maven

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

修改配置文件,加入如下内容

vim /etc/profile# maven配置
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATsource /etc/profilemvn -version# 修改配置内容如下
vim /usr/local/apache-maven-3.5.4/conf/settings.xml<localRepository>/usr/local/repo</localRepository>

在这里插入图片描述

在这里插入图片描述

安装Nginx

安装依赖包

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

或者通过wget下载Nginx安装包

wget https://nginx.org/download/nginx-1.16.1.tar.gz

解压

tar -zxvf nginx-1.16.1.tar.gz

安装

cd nginx-1.16.1./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modulemake && make install

执行 ./configure报错

在这里插入图片描述

安装依赖包

yum -y install pcre-devel openssl openssl-devel

安装成功

在这里插入图片描述

make && make install

检查版本

cd /usr/local/nginx/sbin/./nginx -v./nginx -t

出现如下,即为正确

在这里插入图片描述

启动Nginx

./nginx

开放80端口

firewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --reload

访问成功

在这里插入图片描述

停止服务

./nginx -s stop

查看进程

ps -ef | grep nginx

重置配置文件

./nginx -s reload

配置全局命令

在这里插入图片描述

vim /etc/profilesource /etc/profile

配置成功

在这里插入图片描述

项目打包(手动部署)

在这里插入图片描述

上传到指定目录 /usr/local/app 目录下

在这里插入图片描述

手工部署项目

改为后台运行,并将日志输出到日志文件

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

在这里插入图片描述

浏览器输入访问项目

访问成功

在这里插入图片描述

在这里插入图片描述

自动化执行脚本(自动部署)

#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================echo 停止原来运行中的工程
APP_NAME=helloworldtpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Stop Process...'kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉取最新代码
cd /usr/local/helloworldecho 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar helloworld-1.0-SNAPSHOT.jar &> helloworld.log &
echo 项目启动完成

通过Shell脚本自动部署项目

设置静态ip

修改文件 /etc/sysconfig/network-scripts/ifcfg-ens33

ifcfg-ens33 每个人不同,一般都是ifcfg-ensxxxxxxxxxx

HWADDR=00:0C:29:8C:9F:BF
TYPE=Ethernet
BOOTPROTO=static  #使用静态IP地址,默认为dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=dfebdc59-a7da-4377-ac8e-e0346a8b71f6
ONBOOT=yes #开机是否使用
IPADDR=192.168.18.128 #设置的静态IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.18.2  #网关地址
DNS1=218.2.135.1 #DNS服务器

注意

在这里插入图片描述

前端部署

打包前端项目dist,上传到指定nginx下的指定的目录

在这里插入图片描述

更改nginx配置文件

cd /usr/local/nginx/conf/vim nginx.conf
	 location / {root   html/dist;index  index.html index.htm;}location ^~ /api/ {rewrite ^/api/(.*) /$1 break;proxy_pass http://192.168.18.128:8080;}

在这里插入图片描述

下面的location配置根据项目来配置的,每个项目不同

后端部署

项目打包,上传到指定目录

在这里插入图片描述

在此目录下执行

java -jar boot工程.jar

改为后台运行并日志记录

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

也可以灵活的指定外部配置文件启动

java -jar boot工程.jar --spring.config.location=classpath:application.yml

在这里插入图片描述

访问项目

在这里插入图片描述

查看控制台正常打印

在这里插入图片描述

至此项目部署成功!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_165787.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter plugins插件【三】【Flutter Intl】

3、 Flutter Intl 多语言国际化 在Android Studio中菜单Tools找到flutter intl创建多语言配置。 创建后会在pubspec.yaml出现 flutter_intl:enabled: true 在工程的lib会生成l10n与generated文件夹 l10n包含 intl_en.arb intl_zn.arb 我们在intl_en.arb添加 { home: &quo…

最详细Maven下载、安装、配置教程

Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目&#xff0c;其主要服务于基于Java平台的项目创建&#xff0c;依赖管理和项目信息管理。maven是Apache的顶级项目&#xff0c;解释为“专家&#xff0c;内行”&#xff0c;它是一个项目管理的工具&…

小苹果他爹V5.8版本最强小苹果影视盒子增加46条内置优质单仓线路

这款软件直接使用了俊版的小苹果接口&#xff0c;并且许多资源似乎都是直接调用的小苹果官方资源。这样一来&#xff0c;小苹果的作者可能会面临版权方面的问题&#xff0c;而且也让更多的用户对小苹果的收费模式产生质疑。在这个信息传播如此快速的时代&#xff0c;开发者们应…

历史库存储成本节约至少 50% ,OceanBase数据压缩核心技术解读

“数据是二十一世纪的石油”&#xff0c;这个观点正在逐渐成为现实&#xff0c;现在我们有各种各样的 IT 系统不断地生产着数据&#xff0c;这些数据累积起来为我们的生产生活带来了很多便利。但在挖掘这些数据价值的同时&#xff0c;大量数据的存储与计算也带来了巨大的成本&a…

C# 如何将使用的Dll嵌入到.exe应用程序中?

文章目录 前言详细实操简要步骤 前言 有没有想自己开发的exe保留一点神秘&#xff0c;不想让他人知道软件使用了哪些dll; 又或许是客户觉得一个软件里面的dll文件太多了&#xff0c;能不能简单一点&#xff0c;直接双击.exe就可以直接运行了&#xff0c;别搞那么多乱七八糟的。…

Backtrader中文文档专栏订阅须知

由于CSDN新出的扣费机制过于强盗&#xff0c;您通过平台支付的金额只有50%是我的。针对本专栏&#xff0c;如果您有付费意愿&#xff0c;建议通过我的淘宝小店完成支付。&#xff08;我已调整本专栏在CSDN上的售价&#xff09; 之所以如此安排&#xff0c;主要是考虑到文档凝聚…

Redis 7 第四讲 数据持久化

总体 RDB 介绍 RDB 持久化以指定的时间间隔执行数据集的时间点快照 。 把某一时刻的数据和状态以文件的形式写到磁盘上,即使出现故障宕机,快照文件也不会丢失,数据的可靠性得到保证。快照文件就是RDB(Redis DataBase)文件(dump.rdb) 作用 在指定的时间间隔内将内存中的数…

springboot web开发静态资源的映射规则

前言 我们之间介绍过SpringBoot自动配置的原理&#xff0c;基本上是如下&#xff1a; xxxxAutoConfiguration&#xff1a;帮我们给容器中自动配置组件&#xff1b; xxxxProperties:配置类来封装配置文件的内容&#xff1b; web开发中都在org.springframework.boot.autoconfig…

数据治理-数据管理框架

DMBOK2提出的想法和概念在不同的组织中都可以应用&#xff0c;组织所采用的数据管理方法取决于某些关键要素&#xff0c;如其所处行业、所应用的数据范围、企业文化、成熟度、战略、愿景以及待解决的问题和挑战。 战略一致性模型和阿姆斯特丹模型&#xff0c;展示了组织管理数…

leetcode 1365. 有多少小于当前数字的数字

2023.9.2 本题直观的解法就是双层for循环暴力求解&#xff1a; 暴力解&#xff1a; class Solution { public:vector<int> smallerNumbersThanCurrent(vector<int>& nums) {vector<int> ans;for(int i0; i<nums.size(); i){int temp 0;//比当前元素…

【链表OJ 10】环形链表Ⅱ(求入环节点)

前言: &#x1f4a5;&#x1f388;个人主页:​​​​​​Dream_Chaser&#xff5e; &#x1f388;&#x1f4a5; ✨✨刷题专栏:http://t.csdn.cn/UlvTc ⛳⛳本篇内容:力扣上链表OJ题目 目录 leetcode142. 环形链表 II 1.问题描述 2.代码思路 3.问题分析 leetcode142. 环形链…

mac帧 arp

1.分片 2.MSS max segment size 3.跨网络的本质 就是经历很多的子网或者局域网 4.将数据从A主机跨网络送到B主机的能力 IP和mac IP解决的是路径选择的问题 5.数据链路层 用于两个设备&#xff08;同一种数据链路节点&#xff09;之间进行传递 6.以太网ether 7.局域网通…

《爵士乐史》乔德.泰亚 笔记

第一章 【美国音乐的非洲化】 【乡村布鲁斯和经典布鲁斯】 布鲁斯&#xff1a;不止包括忧愁、哀痛 十二小节布鲁斯特征&#xff1a; 1.乐型&#xff08;A:主、B:属、C/D:下属&#xff09;&#xff1a;A→A→B→A→C→D→A→A 2.旋律&#xff1a;大三、小三、降七、降五 盲人…

C语言——指针基本语法

概述 内存地址 在计算机内存中&#xff0c;每个存储单元都有一个唯一的地址(内存编号)。 通俗理解&#xff0c;内存就是房间&#xff0c;地址就是门牌号 指针和指针变量 指针&#xff08;Pointer&#xff09;是一种特殊的变量类型&#xff0c;它用于存储内存地址。 指针的实…

MVC,MVP,MVVM的理解和区别

MVC MVC &#xff0c;早期的开发架构&#xff0c;在安卓里&#xff0c;用res代表V&#xff0c;activity代表Controller层&#xff0c;Model层完成数据请求&#xff0c;更新操作&#xff0c;activity完成view的绑定&#xff0c;以及业务逻辑的编写&#xff0c;更新view&#xf…

WordPress(5)在主题中添加文章字数和预计阅读时间

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 样式图一、添加位置二、找到主题文件样式图 提示:以下是本篇文章正文内容,下面案例可供参考 一、添加位置 二、找到主题文件 在主题目录下functions.php文件把下面的代码添加进去: // 文章字数…

javaScipt

javaScipt 一、JavaScript简介二、javaScript基础1、输入输出语法2、变量3、常量4、数据类型4.1、数字型 number4.2、字符串类型 string4.3、布尔类型 boolean4.4、未定义类型 undefined4.5、null 空类型4.6、typeof 检测变量数据类型 5、数据类型转换5.1、隐式转换5.2、显示转…

CESM2代码下载

这半年忙着毕业写论文&#xff0c;好久好久好久不更新了∠( ω)&#xff0f; &#xff0c;今天准备开个新坑 ๑乛◡乛๑&#xff0c;学习一下CESM&#xff08;Community Earth System Model&#xff09;&#xff0c;它是一个完全耦合的全球气候模型&#xff0c;可用于地球过去、…

MOS场效应管

导体三极管中参与导电的有两种极性的载流子&#xff0c;所以也称为双极型三极管。本文将介绍另一种三极管&#xff0c;这种三极管只有一种载流子参与导电&#xff0c;所以也称为单极型三极管&#xff0c;因为这种管子是利用电场效应控制电流的&#xff0c;所以也叫场效应三极管…

力扣:82. 删除排序链表中的重复元素 II(Python3)

题目&#xff1a; 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - …