SpringBoot+VUE前后端分离项目学习笔记 - 【24 服务器安装部署】

news2024/9/28 1:22:23

本节主要实现服务器购买以及服务部署
PS: 由于没有服务器本节仅做大致流程记录,无实际操作步骤

服务器配置安装

文档:docker安装centos、jdk、mysql、redis…
链接:http://note.youdao.com/noteshare?id=6a01550a3acfbafc7cbbea4ae99c0e48&sub=A10A5B91977D4AA2A91742C78A1F562E

文档:安装docker.note
链接:http://note.youdao.com/noteshare?id=08d2d6371df597b77f49d575a5d83c6a&sub=AA93C21816DF493AB1B95440064660A1

文档:linux安装jdk.note
链接:http://note.youdao.com/noteshare?id=0d342eb40a5f6989f739c896ef04e785&sub=0797625CCF4943B5BBD526CB6EE0E6C4

文档:Linux安装Nginx.md
链接:http://note.youdao.com/noteshare?id=7dcc76c547a2e6e2e59b7c9587635a0a&sub=67BC8070EF41484CADA731CDB036C906

项目打包

后台打包

跳过test

mvn clean package -DskipTests

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

后台启动

本地启动

java -jar .\springboot-0.01-SNAPSHOT.jar

在这里插入图片描述

服务器启动

nohup java -jar springboot-0.0.1-SNAPSHOT.jar &

关闭

kill -9 [进程号]

前台打包

npm run build

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

前台启动

安装 anywhere前端静态资源服务器插件:

npm install anywhere -g

在这里插入图片描述

本地启动

anywhere -p 8080

在这里插入图片描述
在这里插入图片描述
再次刷新就无法get 【之后再补充解决办法】
在这里插入图片描述
在服务器端可以通过nginx里的try_files来解决
在这里插入图片描述

服务器启动【通过nignx】

先给dist文件777权限,

chmod 777 *

在这里插入图片描述

vue dist nginx配置:

到nginx/conf目录下,编辑nginx.conf 【80端口要开放】
在这里插入图片描述

vim nginx.conf

添加如下配置

location / {
            root /home/server/dist; #前端dist目录
            index index.html index.htm; 
            try_files $uri $uri/ /index.html;
        }

在这里插入图片描述

输入:wq 按回车保存

nginx启动&重启:

启动

[root@localhost nginx-1.14.0]# cd ../nginx/sbin
[root@localhost sbin]# ./nginx

重启

/nginx -s reload

在这里插入图片描述
访问服务器ip即可得到前端页面
在这里插入图片描述

ip配置

注意:前端文件上传和导出的 url都需要配置 serverIp

文件上传、下载和导出都需要使用到服务器的公网IP

接口请求也需要使用公网IP

注意:上传必须这样写:<el-upload :action=“‘http://’ + serverIp + ‘:9090/user/import’”

前台进行ip配置

public/config.js

新增该文件
在这里插入图片描述

utils/request.js

从图一改成如下代码
在这里插入图片描述
代码:

import axios from 'axios'
import ElementUI from "element-ui";
import {serverIp} from "../../public/config";

const request = axios.create({
    baseURL: `http://${serverIp}:9090`,
    timeout: 30000
})

然后按Ctrl+Shift+F, 搜索前端所有localhost,将其改成serverIp,具体见下

Person.vue

      <el-upload
          class="avatar-uploader"
          :action="'http://' + serverIp +':9090/file/upload'"
          :show-file-list="false"
          :on-success="handleAvatarSuccess"
      >
        <img v-if="form.avatarUrl" :src="form.avatarUrl" class="avatar">
        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
      </el-upload>

==============================================================================
import {serverIp} from "../../public/config";

export default {
  name: "Person",
  data() {
    return {
      serverIp: serverIp,
      form: {},
      user: localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")) : {}
    }
  },

File.vue

      <el-upload :action="'http://' + serverIp + ':9090/file/upload'" :show-file-list="false"
                 :on-success="handleFileUploadSuccess" style="display: inline-block">
        <el-button type="primary" class="ml-5">上传文件 <i class="el-icon-top"></i></el-button>
      </el-upload>
=================================================
import {serverIp} from "../../public/config";

export default {
  name: "File",
  data() {
    return {
      serverIp: serverIp,
      tableData: [],
      name: '',
      multipleSelection: [],
      pageNum: 1,
      pageSize: 10,
      total: 0
    }
  },

Menu.vue

    exp() {
      window.open(`http://${serverIp}:9090/role/export`)
    },

User.vue

 <el-upload :action="'http://' + serverIp + ':9090/user/import'" :show-file-list="false" accept="xlsx" :on-success="handleExcelImportSuccess" style="display: inline-block">
        <el-button type="primary" class="ml-5">导入 <i class="el-icon-bottom"></i></el-button>
      </el-upload>
==========================================================================
import {serverIp} from "../../public/config";

export default {
  name: "User",
  data() {
    return {
      serverIp: serverIp,
      tableData: [],
      total: 0,
      pageNum: 1,
      pageSize: 10,
      username: "",
      email: "",
      address: "",
      form: {},
      dialogFormVisible: false,
      multipleSelection: [],
      roles: [],
      courses: [],
      vis: false,
      stuCourses: [],
      stuVis: false
    }
  },
  =======================================================================
      exp() {
      window.open(`http://${serverIp}:9090/user/export`)
    },

后台ip配置:

application.yml

image-20220222220358650

File.controller

    @Value("${files.upload.path}")
    private String fileUploadPath;

    @Value("${server.ip}")
    private String serverIp;
    ===============================
            if (dbFiles != null) {
            url = dbFiles.getUrl();
        } else {
            // 上传文件到磁盘
            file.transferTo(uploadFile);
            // 数据库若不存在重复文件,则不删除刚才上传的文件
            url = "http://" + serverIp + ":9090/file/" + fileUUID;
        }

hosts文件:

C:\Windows\System32\drivers\etc

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

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

相关文章

嵌入式Linux-进程间通信

1.进程间通信 1.1 进程间通信的介绍 进程间通信&#xff08;interprocess communication&#xff0c;简称 IPC&#xff09;指两个进程之间的通信。系统中的每一个进程都有各自的地址空间&#xff0c;并且相互独立、隔离&#xff0c;每个进程都处于自己的地址空间中。所以同一…

【自学Docker】Docker attach命令

Docker attach命令 大纲 docker attach教程 使用 docker attach 命令可以用来进入到一个正在运行的 Docker容器。docker attach 命令后面的 CONTAINER 可以是容器Id&#xff0c;或者是容器名。 要能够使用 docker attach 的容器必须是正在运行的。 docker attach语法 haic…

# Itext Pdf 5 教程

Itext Pdf 5 教程 Itext Pdf Itext7收费&#xff0c;故使用Itext5传统版&#xff0c;Itext5不再维护 官网&#xff1a;iText 5 |iText PDF Itext5 Java Api 地址&#xff1a;iText 5 Java | iText PDF 依赖 <!-- itextpdf --> <dependency><groupId>c…

视频编辑:VisioForge Video Edit SDK .Net 15.5 标准版 Crack

视频编辑&#xff1a;VisioForge Video Edit SDK .Net v15.5 标准版 Crack,我没有专业版&#xff0c;希望你提供 VisioForge Video Edit SDK .Net 允许程序员轻松地将视频编辑和处理功能集成到他们的软件应用程序中。SDK 允许您使用任何音频和视频文件创建您的电影。您可以为其…

2022年游戏安全风险增长96%,高维作弊对抗激烈

导读&#xff1a;2022年&#xff0c;游戏行业在多种因素影响下遭遇寒冬。但游戏黑灰产规模在迅速壮大&#xff0c;不少游戏饱受其侵扰&#xff0c;越来越多的游戏厂商开始重视游戏安全问题。 为帮助游戏厂商能够清晰、直观地了解当前游戏安全对抗形势&#xff0c;在经过多轮调…

【虹科云展厅专题】虹科赋能汽车智能化云展厅——汽车总线专题

虹科2023年开年福利 聚焦前沿技术&#xff0c;【虹科赋能汽车智能化云展厅】正式上线&#xff0c;本次云展厅围绕“汽车以太网/TSN、汽车总线、智能网联、电子测试与验证、自动驾驶”等核心话题&#xff0c;为您带来如临展会现场般的讲演与介绍&#xff0c;更有技术工程师全程…

机智云DUT实现远程智能鱼池管理系统

一、前言机智云研发的4G DTU在养殖智能系统管理方面优势&#xff0c;此处以智能鱼池管理系统为例。1.实时数据监控机智云智能鱼池养殖智能系统实现对整个鱼池水质的实时监控&#xff0c;无人值守设备状态下运行。为客管理者提供实时异常数据报警信息、实时环境参数波动、实时/定…

nacos的安装部署

文章目录1.nacos的下载2.nacos数据库的建立3.nacos配置文件修改3.1配置文件3.2设置单点登录4.登录nacos网页1.nacos的下载 下载地址&#xff1a; https://github.com/alibaba/nacos/releases 根据自己的需要下载合适的版本。 2.nacos数据库的建立 navicat运行nacos下conf的…

【深度】从链上分析和金融安全角度,看stETH的囚徒困境和Celsius挤兑事件

6月7日开始&#xff0c;以Celsius被曝损失 3.5 万枚 ETH开始&#xff0c;ETH流动性生态乃至整个加密货币市场进入到一个以stETH为中心的流动性囚徒困境之中&#xff0c;而这也造成了对Celsius等加密货币“银行”挤兑现象的发生。 SharkTeam将从事件的起源开始&#xff0c;也就…

拆解“算力偏科”难题,智算中心下一步向何处去?

十年前&#xff0c;英国《经济学人》曾用工业用电量为主的指标来评估中国GDP&#xff0c;而现在算力已经成为新的指标。似乎每个企业、每个城市都在努力增加算力。一位读者不无困惑地留言&#xff0c;大家都说自己算力有多少FLOPS&#xff0c;能支撑这个大模型、那个大数据&…

九龙证券|北上资金连续10日“跑步入场”,1月净流入已逼近2022全年

1月以来&#xff0c;北上资金净流入规划已接近2022全年。 半导体概念股集体大涨 1月17日&#xff0c;沪指缩量小幅调整&#xff0c;收跌0.1%&#xff1b;深成指涨0.13%&#xff0c;创业板指收涨0.24%&#xff0c;科创50涨逾1%。 板块方面&#xff0c;半导体及元件板块继续走强…

基于.NetCore+React单点登录系统

更多开源项目请查看&#xff1a; 一个专注推荐.Net开源项目的榜单 对于有多个应用系统的企业来说&#xff0c;每一个应用系统都有自己的用户体系&#xff0c;这就造成用户在切换不同应用系统时&#xff0c;就要多次输入账号密码&#xff0c;导致体验非常不好&#xff0c;也造成…

【vue系列-07】vue脚手架的基本使用

深入理解脚手架的使用一&#xff0c;vue脚手架的基本使用1&#xff0c;vue-cli安装2&#xff0c;vue项目中的文件组成3&#xff0c;render配置项4&#xff0c;ref属性5&#xff0c;props属性6&#xff0c;mixin属性7&#xff0c;scope属性一&#xff0c;vue脚手架的基本使用 在…

vsftpd使用指北

vsftpd使用指北 文章目录vsftpd使用指北1.安装vsftpd2.登录3.切换本地路径下载命令&#xff1a;get用于下载单个文件&#xff1a;mget用于批量下载&#xff1a;上传命令&#xff1a;FilezillaReferencevsftpd 是“very secure FTP daemon”的缩写&#xff0c;是一个完全免费的、…

Vue组件化

1、Vue组件化开发思想 1.1、认识组件化开发 组件化也是类似的思想&#xff1a; 如果我们将一个页面中所有的处理逻辑全部放在一起&#xff0c;处理起来就会变得非常复杂&#xff0c;而且不利于后续的管理以及扩展&#xff1b;但如果&#xff0c;我们讲一个页面拆分成一个个小…

【算法竞赛学习】csoj:寒假第一场

文章目录前言新年礼物灯笼展摩天楼神抽新年大礼前言 由于本人菜鸡&#xff0c;所以大多都是使用出题人的代码和思路 如有侵权&#xff0c;麻烦联系up删帖&#xff0c;本贴仅作为笔记记录 本篇大多是在吹水&#xff0c;技术方面可以直接看代码注释&#xff0c;思路在水文中&am…

Linux下的进程通信之管道通信

目录 进程间通信的背景 为什么要进行进程间通信&#xff1f; 管道 什么是管道&#xff1f; 匿名管道 匿名管道原理 如何创建匿名管道&#xff1f; 命名管道 进程间通信的背景 进程间通信就是在不同的进程之间进行的数据的交换&#xff0c;进程间通信又称为Interproces…

Python SciPy 空间数据

SciPy 空间数据空间数据又称几何数据&#xff0c;它用来表示物体的位置、形态、大小分布等各方面的信息&#xff0c;比如坐标上的点。SciPy 通过 scipy.spatial 模块处理空间数据&#xff0c;比如判断一个点是否在边界内、计算给定点周围距离最近点以及给定距离内的所有点。三角…

【学Vue就跟玩一样】组件的自定义事件和全局事件总线

一&#xff0c;自定义事件1.自定义事件是什么自定义事件一种组件间通信的方式&#xff0c;适用于 子组件 ——> 父组件传输数据等2.要在什么地方使用若App是父组件&#xff0c;School是子组件&#xff0c;School想给App传数据&#xff0c;那么就要在App中给School绑定自定义…

使用k8s实现灰度发布,金丝雀,蓝绿发布

介绍#Ingress-Nginx 是一个K8S ingress工具&#xff0c;支持配置 Ingress Annotations 来实现不同场景下的灰度发布和测试。 Nginx Annotations 支持以下 4 种 Canary 规则&#xff1a;nginx.ingress.kubernetes.io/canary-by-header&#xff1a;基于 Request Header 的流量切分…