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

news2025/1/27 13:05:45

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-build

yum install -y devtoolset-8-toolchain

scl 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.1

make

如果没有准备好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/mysql

tar -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.rpm

rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm

yum install net-tools

rpm -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 -tunlp

netstat -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');			   #设置密码为root

grant all on *.* to 'root'@'%'identified by 'root'; #开启访问权限

flush privileges;

在这里插入图片描述

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

firewall-cmd --list-all

设置开放的端口号

firewall-cmd --add-service=http --permanent

firewall-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 git

yum 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:$PAT

source /etc/profile

mvn -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_module

make && 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 --permanent

firewall-cmd --reload

访问成功

在这里插入图片描述

停止服务

./nginx -s stop

查看进程

ps -ef | grep nginx

重置配置文件

./nginx -s reload

配置全局命令

在这里插入图片描述

vim /etc/profile

source /etc/profile

配置成功

在这里插入图片描述

项目打包(手动部署)

在这里插入图片描述

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

在这里插入图片描述

手工部署项目

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

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

在这里插入图片描述

浏览器输入访问项目

访问成功

在这里插入图片描述

在这里插入图片描述

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

#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================

echo 停止原来运行中的工程
APP_NAME=helloworld

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo '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} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

echo 准备从Git仓库拉取最新代码
cd /usr/local/helloworld

echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成

echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`

cd target

echo 启动项目
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.coloradmin.cn/o/965273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 45题:跳跃游戏

题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - …

ctfshow—萌新赛—给她

0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 0x01 题目 0x02 Write Up 首先看到访问页面&#xff0c;正常情况下这种都是sql注入&#xff0c;尝试发现被转义了 尝试无果之后&#xff0c;扫描目录&#xff…

zookeeper 理论合集

目录 系统背景 集群结构 多个节点之间的角色 节点的状态 为什么引入 Observer 存储结构 ZNode 节点结构 ZNode 创建类型 内存数据存储 数据持久化 zookeeper 的容量大小 数据同步 消息广播 崩溃恢复 如何保证顺序一致性 核心流程 Leader 选举流程 脑裂问题 …

Python基础篇(17):模块与包

一、as 关键字的使用 1、as 关键字的作用&#xff1a;给导入的模块取别名 import 测试1 as Test_1 import 测试2 as Test_2Test_1.say_hello() Test_2.say_hello() 二、if __name__ __main__ 1、作用 测试当前模块所编写的代码块&#xff0c;根据业务自主选择需要运行的代…

李宏毅hw1_covid19预测_代码研读+想办法降低validation的loss(Kaggle目前用不了)

1.考虑调整这个neural network的结构尝试让这个loss降低 &#xff08;1&#xff09;Linear(inputdim,64) - ReLU-Linear(64,1), loss0.7174 &#xff08;2&#xff09;Linear(inputdim,64) - ReLU-Linear(64,64) -ReLU-Linear(64,1),loss 0.6996 &#xff08;3&#xff09;这…

spring boot + Consul 示例 (Kotlin版)

文章目录 1.docker 安装consul2.创建基于springboot的client2.1 依赖版本2.2 pom.xml2.3 启动类2.4 application.properties 3 搭建完成4. 总结 1.docker 安装consul docker-compose.yaml version: "3"services:consul:image: consul:1.4.4container_name: consule…

DevEco Studio 介绍、下载及安装

DevEco Studio 简介 HUAWEI DevEco Studio面向App、HAG快服务、IoT智能硬件设备3类开发者&#xff0c;提供设计、编码、编译、调测和云端测试等端到端一站式服务。一次开发&#xff0c;多端部署&#xff1a;支持18N全场景泛终端软件应用和服务开发开放能力一站集成&#xff1a…

5 大虚拟数字人工具:视频内容创作的未来

人工智能&#xff08;AI&#xff09;给视频内容创作领域带来了一场革命。这一领域的显着进步之一是人工智能生成的会说话的化身的出现&#xff0c;它已经成为制作高质量视频的游戏规则改变者&#xff0c;而无需专业演员或昂贵的视频编辑软件。在这篇博文中&#xff0c;我们将深…

上半年净利润同比改善22.18%,赛力斯的韧性从何而来?

2023年上半年&#xff0c;伴随特斯拉一声全球大降价&#xff0c;新能源汽车行业价格混战拉开帷幕&#xff0c;车企业绩纷纷承压。“卷”风盛行之下&#xff0c;谁抗住了压力&#xff1f; 8月30日&#xff0c;赛力斯发布了中期业绩报告。根据财报&#xff0c;2023年上半年&…

10. selenium API (二)

目录 1. 多层框架/窗口定位 2. 下拉框处理 2.1 前端界面 2.2 代码 3. 针对 alert 弹窗进行操作 3.1 前端界面 3.2 代码 4. 文件提交 4.1 前端界面 4.2 代码 5. 显示等待 6. 操作浏览器滚动条 7. 截图 8. 浏览器关闭 9. 窗口切换 在上篇文章中&#xff0c;我们学…

Laravel 集合的使用 集合的常用方法 模型的数据集合 ⑩

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; THINK PHP &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f44…

【Linux】文件

Linux 文件 什么叫文件C语言视角下文件的操作文件的打开与关闭文件的写操作文件的读操作 & cat命令模拟实现 文件操作的系统接口open & closewriteread 文件描述符进程与文件的关系重定向问题Linux下一切皆文件的认识文件缓冲区缓冲区的刷新策略 stuout & stderr 什…

学信网学历电子注册备案表 下载方法

如果你需要成人高考的专升本 那么就会需要 学信网学历电子注册备案表 全称叫 教育部学历证书电子注册备案表 是学信网依托全国高等教育学生信息数据库&#xff0c;对学生的学历信息提供的在线验证报告&#xff0c;是我们验证学历真伪的一份报告 学历电子注册备案表在 考研、考…

shell脚本中时间的编写规范20230902

背景&#xff1a;经常写shell&#xff0c;但是很多种时间格式规范真是记不住哈&#xff0c;&#x1f604;&#xff0c;索性记录一下 一、 获取-年 下面的这两种写法都成 year$(date "%Y") yeardate "%Y"echo -e "测试输出 年: ${year}"输出结…

springboot web开发springmvc自动配置原理

前言 我们也知道springboot启用springmvc基本不用做什么配置可以很方便就使用了但是不了解原理,开发过程中遇到点问题估计就比较头疼,不管了解的深不深入,先巴拉一番再说… 下面我们先看看官网…我的版本是2.3.2版本,发现官网改动也比较大…不同版本自己巴拉下吧,结构虽然变化…

PMD代码检查:过长的变量名字(LongVariable)

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_codestyle.html#longvariable 属性、正式变量、局部变量的名字如果太长&#xff0c;会使代码难理解。例如&#xff0c;下面的代码报违反项&#xff1a; 可以通过属性minimum配置报违反规则的最小长度&#xff08;默…

qt.qpa.plugin:找不到Qt平台插件“wayland“|| (下载插件)Ubuntu上解决方案

相信大家也都知道这个地方应该做什么&#xff0c;当然是下载这个qt平台的插件wayland,但是很多人可能不知道怎么下载这个插件。 那么我现在要说的这个方法就是针对这种的。 sudo apt install qtwayland5完事儿了奥兄弟们。 看看效果 正常了奥。

总结ADX指标交易的好处

股神巴菲特从一个穷小子变成世界富豪&#xff0c;而闻名世界。anzo capital昂首资本以为这辈子再也不会和巴菲特产生任何交集&#xff0c;直到我看了巴菲特的发家史&#xff0c;才发现原来我们都使用过ADX指标盈利过&#xff0c;下面anzo capital昂首资本就总结一下使用ADX指…

如何大批量、低成本获取精准客户

身为一个企业或广告投放的决策人&#xff0c;当你在做每一次营销决策的时候&#xff0c;一定会回答一个问题&#xff1a;如何把产品卖给对的人&#xff1f; 目前经济形势下&#xff0c;消费活跃&#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;//比当前元素…