宝塔Linux部署 Vue + Spring Boot + MySQL + Redis

news2024/11/14 14:20:38

服务器安装宝塔

不同的服务器操作系统对应着不同的安装命令。这里我用的是centos8.6,所以安装命令是

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

注意安装宝塔面板时,服务器不要部署任何项目,最好是纯净状态。

部署项目前的宝塔前置配置

安装和配置MySQL

还是一样在软件商店搜索MySQL,点击安装。选择你需要的版本,我选的是8.x,再点击极速安装。
在这里插入图片描述

安装完成后,点击侧边栏中的数据库,再点击添加数据库。选一个数据库名字要和yml文件中连接MySQL数据库的库名一致,用户名和密码也对应yml中的MySQL用户名和密码。访问权限,暂时选择所有人,方便后续使用navicat或者IDEA往线上数据库添加数据,当然后续可以在设置中修改。

在这里插入图片描述
在这里插入图片描述

想连接服务器上的MySQL把localhost改为服务器IP地址,端口是3306,库名、账号和密码就上面的。(前提访问权限改为所有人,或者只指定你的电脑的IP地址)。这样就可以往线上数据库添加数据了。

安装和配置Redis

安装Redis也是一样,在软件商店里面搜索,点击安装。我安装的是6.x版本,因为我自己电脑安装的是5.x版本,安装过高害怕有问题。
在这里插入图片描述

点击设置,再点击性能调整,这里可以设置Redis数据库数量,密码和端口啥的。(建议设个密码,要和yml文件Redis的密码一致。)

在这里插入图片描述

对了如果Redis设置了密码,那么后端RedissonConfig配置类一定要改,改为这样子。多一个password变量和setPassword。

@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class RedissonConfig {
    private String host;
    private String port;
    private String password;
    @Bean
    public RedissonClient redissonClient(){
        // 1. 创建配置
        Config config = new Config();
        String redisAddress = String.format("redis://%s:%s", host, port);
  config.useSingleServer().setAddress(redisAddress).setDatabase(3).setPassword(password);//设置单个服务器,设置地址,选择数据库
        // 2. 创建实例
        RedissonClient redisson = Redisson.create(config);
        return redisson;
    }
}

安装nginx

在软件商店里面搜索并安装nginx
在这里插入图片描述

对了为了防止项目部署后登录出现nginx 404的问题,我们可以在nginx的配置文件中,添加以下配置。

  location / {
  try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在
      index index.html index.htm;
    }
  location @router {
    rewrite ^.*$ /index.html last;
  }

在这里插入图片描述

安装Java项目一键部署

在软件商店里面搜索并安装Java项目一键部署

在这里插入图片描述

在服务器和宝塔面板中放行对应端口
最后,在服务器中添加安全组,放行对应的端口。(6379:Redis端口,3306:MySQL,80:前端,8080:后端,21528:宝塔面板端口)
在这里插入图片描述

宝塔亦是如此点击侧边栏的安全,再点击添加端口规则就可以放行了。

在这里插入图片描述

后端配置跨域
如果前端和后端的协议、域名和端口有一个不同就会涉及跨域问题,所以我们可以在前端或者后端配置跨域策略,以防止请求跨域。本次,我们在后端配置跨域,在config目录下添加跨域配置类就好了。

@Configuration
public class CorsConfig implements WebMvcConfigurer {
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                //是否发送Cookie
                .allowCredentials(true)
                //放行哪些原始域
                .allowedOriginPatterns("*")
                .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"})
                .allowedHeaders("*")
                .exposedHeaders("*");
    }
}

到这里部署项目的前置配置就结束了。接下来,就正式开始打包前端和后端项目了,并将打包文件上传到宝塔面板中,它会帮我们把文件部署在服务器中。

前端部署
配置生产和开发环境
在项目打包之前,先配置myAxios.ts文件(这个文件就是你自定义axios的文件,并且在里面区分开发环境和生产环境)的线上环境和生产环境。(注意生产环境的url后面要加上后端端口号,但有时又不要加,视情况而定。)

import axios from 'axios';
 
const isDev = process.env.NODE_ENV === 'development';
 
const myAxios = axios.create({
    baseURL: isDev ? 'http://localhost:8080/api' : 'http://你的服务器IP地址或者域名/api',
})
 
myAxios.defaults.withCredentials = true; //设置为true
 
// Add a request interceptor
myAxios.interceptors.request.use(function (config) {
    console.log('我要发请求啦')
    return config;
}, function (error) {
    return Promise.reject(error);
});
 
myAxios.interceptors.response.use(function (response) {
    console.log('我收到你的响应啦')
    // 未登录则跳转登录页
    if (response?.data?.code === 40100) {
        const redirectUrl = window.location.href;
        window.location.href = `/user/login?=redirect=${redirectUrl}`;
    }
    return response.data;
}, function (error) {
    // Do something with response error
    return Promise.reject(error);
});
 
export default myAxios;

前端项目打包

在宝塔部署前端项目之前,先将前端项目打包好。在package.json文件中执行buid命令。
在这里插入图片描述

打包后会多出一个dist目录,点击右键打开于终端,在终端中执行serve命令,判断打包好的项目是否能够运行成功。(注意一定要切换至dist目录下执行serve命令,不然点击链接显示不出来项目)
在这里插入图片描述

在这里插入图片描述

点击Local后面的地址,看看项目打包是否有问题。

在这里插入图片描述

前端打包后的项目拖到宝塔

连接Linux宝塔面板后点击PHP项目,点击添加站点。域名最好就填你的服务器IP地址,或者你自己想一个域名(前提域名是你买的,不是随便起的)吧。随后直接提交。
在这里插入图片描述

接着点击根目录下面的绿色链接。

在这里插入图片描述

把打包后的dist目录下的东西全部拖进去。
在这里插入图片描述

至此前端部署已经结束,开始后端部署。

如果前端部署的时候出现 404 not found 的话,请在站点的配置文件中加上一下配置,如果还是不行点击侧边栏的软件商店找到 nginx 查看其监听的端口号,把这个端口在宝塔和云服务器中放行。

    location / {
    try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
      index  index.html index.htm;
    }
    #对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
    #因此需要rewrite到index.html中,然后交给路由在处理请求资源
    location @router {
        rewrite ^.*$ /index.html last;
    }

后端部署

配置生产和开发环境
在后端打成jar包之前,先把后端的application-prod.yml文件给配置好。这里直接放我的哪个文件了。

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  application:
    name: homieMatching
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://服务器IP地址:3306/MySQL库名?characterEncoding=UTF-8
    username: 服务器MySQL账号
    password: 服务器MySQL密码
  session:
    timeout: 86400
    store-type: redis
  redis:
    port: 6379
    host: 127.0.0.1
    database: 0
    password: 服务器redis密码
server:
  port: 8080
  servlet:
    context-path: /api
    session:
      cookie:
        domain: 服务器IP地址或者域名(其实就是前端添加站点时的网站名,我这里还是建议全部设为服务器IP地址吧,但注意别把IP地址告诉任何人)
        same-site: lax
        secure: false
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-field: isDelete
      logic-delete-value: 1
      logic-not-delete-value: 0

后端项目打包

点击Maven,点击禁止标志(这是为了跳过Test测试用例的打包,如果某些Test类有问题就会打包失败),再点击package准备打包,等待打包完成。

在这里插入图片描述

打包完成之后,target目录下就会出现一个homieMatching-0.0.1-SNAPSHOT.jar文件,这个就是后端打包后的jar包。

在这里插入图片描述

后端项目拖到宝塔
点击侧边栏中的文件在/www/wwwroot目录下新建一个文件,将打包后的jar放进新建的目录下。我新建的目录名是homieMatching-backend。

在这里插入图片描述
在这里插入图片描述

随后进入你新建的目录下面,把后端打包好的jar包拖进去。在这里插入图片描述

随后点击侧边栏的网站,再点击Java项目,再点击添加Java项目。
在这里插入图片描述

点击项目jar路径后的文件夹标志,选择刚才拖进目录的jar包。项目端后就是yml文件中的port,即你后端的端口,同时勾选放行该端口。如果你是8081你就放行8081端口,同时项目执行命令中的–server.port的端口也要修改,得与上面项目端口一致。
在这里插入图片描述

点击保存项目配置,Spring Boot项目就会开始运行了。(如果项目启动失败,请看看左侧边栏的项目日志,看看项目启动时抛了什么异常或者有什么问题,随后逐一排查)

这时候你就可以输入网站名,看看项目前后端联调存不存在问题了。

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

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

相关文章

如何在uni-app中使用原子化 CSS——UnoCSS

原文地址:原文链接 一、前言 UnoCSS是一个即时的原子化 CSS 引擎,旨在灵活和可扩展。核心是不拘一格的,所有的 CSS 工具类都是通过预设提供的。 那么,UnoCSS 与其他框架的有何不同之处呢? UnoCSS 由 Windi CSS 团队…

奥维互动地图经纬度导入,再导出ovjsn再转化为kml格式

一、使用python将excel表中的经纬度换算成小数格式。 在文件上看到的经纬度是东经 1165′27.78″,北纬 2310′57.18″,要转化为116.09105,23.182550000000003 格式。如果要用vba编写函数,可能比较麻烦,为此我使用python来转化 i…

4.提升客户服务体验:ChatGPT在客服中的应用(4/10)

本文大纲旨在指导撰写一篇全面探讨ChatGPT如何通过优化客户服务流程、提供实际应用案例和用户反馈,以提升客户服务体验的深入博客文章。 引言 在当今竞争激烈的商业环境中,客户服务已成为企业成功的关键因素。优质的客户服务不仅能够增强客户满意度和忠…

编程辅助工具下一个热门应用场景是什么?(二)

🎁👉点击进入文心快码 Baidu Comate 官网,体验智能编码之旅,还有超多福利!🎁 本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会杭州站1…

DFS:深搜+回溯+剪枝实战解决OJ问题

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 排列、子集问题 1.1 全排列I 1.2 子集I 1.3 找出所有子集的异或总和 1.4 全排列II 1.5 字母大小写全排列 1.6 优美的排列 二 组合问题 2.1 电话号码的数字组合 …

Qt | AI+Qt6.5.3+ubuntu20.04+FFmpeg实现音视频编解码(播放一个中秋节快乐视频为例)

点击上方"蓝字"关注我们 01、下载 >>> FFmpeg下载官网:https://ffmpeg.org// 本次选择下载linux版本的 环境准备Qt6.5.3ubuntu+虚拟机FFmpeg

解决Visual Studio中OpenCV链接错误:LNK2019无法解析的外部符号

创作不易,您的打赏、关注、点赞、收藏和转发是我坚持下去的动力! 原因分析 错误提示 LNK2019: 无法解析的外部符号 表示在编译过程中,链接器找不到 OpenCV 的相关函数实现。这通常是由于以下原因引起的: 没有正确链接 OpenCV 库&…

[SaaS] FacyTech

Sora还没开源,但这家国产AIGC视频公司已经靠还原现实赚钱了我们找到了朱啸虎说“很酷”的公司https://mp.weixin.qq.com/s/rm_dylLhf4FP01c_hdU3Lw1.tryon 这图ootdiffusion+comfyui工作流吗?lora+controlnet openpose+ipa

数据结构—栈

栈 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈…

兰花种类识别系统源码分享

兰花种类识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

打印图案,输入一个整数表示输出的行数,也表示组成x的长度

//打印图案&#xff0c;输入一个整数表示输出的行数&#xff0c;也表示组成x的长度 //打印图案&#xff0c;输入一个整数表示输出的行数&#xff0c;也表示组成x的长度 //5 //*___* //_*_*_ //__* //-*-*- //*---*- #include<stdio.h> int main() {int i 3;int j 0,…

anaconda下载安装教程

anaconda是python的包管理器&#xff0c;通过它来安装python库比较方便快捷&#xff0c;可以使用conda或者pip命令进行安装。 微智启软件工作室最常用的是Anaconda3-2021.11-Windows-x86_64.exe这一个版本&#xff0c;当然如果你使用其他版本也可以&#xff0c;其他版本特别是最…

激光雷达点云处理—学习随记

一、激光雷达基本概念 激光雷达&#xff08;Light Detection and Ranging&#xff0c;LiDAR&#xff09;&#xff0c;是一种发射激光&#xff08;可见光-近红外&#xff09;于被瞄准物体表面并记录反射光被信号接收器接收到的时间以测定距离的方法。激光雷达通过以下公式确定物…

Redis学习以及SpringBoot集成使用Redis

目录 一、Redis概述 二、Linux下使用Docker安装Redis 三、SpringBoot集成使用Redis 3.1 添加redis依赖 3.2 配置连接redis 3.3 实现序列化 3.4 注入RedisTemplate 3.5 测试 四、Redis数据结构 一、Redis概述 什么是redis&#xff1f; redis 是一个高性能的&#xf…

电子电气架构---智能汽车应该是怎么样的架构?

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

rust GTK4 窗口创建与 wayland Subsurface (vulkan 渲染窗口初始化 (Linux) 上篇)

rust 有封装好的 GTK4 库 (gtk4-rs), 有封装好的 wayland 库 (wayland-rs), 有封装好的 vulkan 库 (vulkano), 单独使用其中的每一个, 都很简单. 但是, 把这些一起使用, 崩 !! 大坑出现了 ! 这个问题的难度超出了事先的预计 (所以原计划一篇文章分成了两篇), 而类似的事情在编…

【Elasticsearch系列九】控制台实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

谷粒商城のElasticsearch

文章目录 前言一、前置知识1、Elasticsearch 的结构2、倒排索引 (Inverted Index)2.1、 索引阶段2.2、查询阶段 二、环境准备1、安装Es2、安装Kibana3、安装 ik 分词器 三、项目整合1、引入依赖2、整合业务2.1、创建索引、文档、构建查询语句2.2、整合业务代码 后记 前言 本篇介…

【C/C++】程序的构建(编译)过程概述

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:C_小米里的大麦的博客-CSDN博客 &#x1f381;代码托管:C: 探索C编程精髓&#xff0c;打造高效代码仓库 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、预处理&#xff08;Preprocessi…

mac安装swoole过程

1.很重要的是得根据自己环境的php版本来选择swoole版本&#xff01;否则都是做无用功。 Swoole 文档 2.通常pecl install swoole是安装最新版本的&#xff0c;当然安装的方式很多种&#xff0c;这里选择编译安装&#xff0c;因为可以选择不同的swoole版本进行安装&#xff0c;…