部署前后端分离项目详细教程

部署前后端分离项目详细教程

1、准备工作

  1. 首先你需要一台服务器,然后在服务器上安装好你所需要的环境,我这里用的宝塔界面来安装环境。

    如果有人不知道怎么安装宝塔界面,可参考这篇文章,如果不知道怎么买服务器,可以参考阿里云飞天计划,学生可以免费领半年。

  2. 在宝塔界面的软件商店,安装MySQL,nginx、Tpmcat、Java项目管理器……(你项目用到了什么,就安什么)

    image-20240201100534335

    选择极速安装,一键安装即可

    image-20240201100620518

    安装过程可能会有点慢,耐心等待即可。

  3. 安装好之后,我们就可以打包前后端的项目了。

2、前端配置

  1. 首先把你用到的localhost全部替换为你的服务器ip,如我此处需要将localhost 全部替换为 8.130.48.75

    image-20240201102041570

  2. 修改你的vue.config.js文件

    9080为我的端口号,可以修改,8090为我后端的端口号,这里设置为你自己的就可。

    const { defineConfig } = require('@vue/cli-service')
     module.exports = defineConfig({
       transpileDependencies: true,
       devServer: {
         port: 9080,
         proxy: {                 //设置代理,必须填
           '/api': {              //设置拦截器  拦截器格式   斜杠+拦截器名字,名字可以自己定
               target: 'http://8.130.48.75:8090',     //代理的目标地址
               changeOrigin: true,              //是否设置同源,输入是的
               pathRewrite: {                   //路径重写
                   '^/api': ''                     //选择忽略拦截器里面的内容
               }
           }
       }
     }
     })

  3. 修改完之后,在终端输入 npm run build 打包即可

  4. 打包完后,可以看到dist目录,这就是你打包之后的文件

    image-20240201102450095

至此,前端打包完毕。

我们首先把前端放到你服务器上测试一下。

  1. 在宝塔界面,将你打包好的文件上传到/www/server/nginx/html 此位置

    image-20240201102921365

  2. 在宝塔界面的软件商店,打开nginx,配置修改,进行修改配置

    image-20240201103831550

image-20240201142247916

 
    server
     {
     listen 9080;   // 前端端口号
     server_name gb_springboot;
     root /www/server/nginx/html/dist;  // 打包好的文件所放的位置
     index index.html index.html;
     try_files $uri $uri/ /index.html;
         
     location /api { 
     proxy_pass http://8.130.48.75:8090/;  // 后端端口号
       }
         access_log  /www/wwwlogs/gb_springboot.log;
     }

然后我们可以尝试访问一下 https:// 你的服务器ip:你的前端端口号/ (https://8.130.48.75:9080/)

然后我们可以看到,无法访问此网站

这是因为我们服务器有安全规则,需要开放你的端口号,在宝塔界面,点击安全,把你的前端端口号添加上去即可。

image-20240201140334127

宝塔添加完之后,我们还需要进入你的服务器页面进行添加(我这里以阿里云服务器为例)点击安全组、管理规则

image-20240201103516849

点击手动添加,将你的端口号添加上去即可

image-20240201103608652

image-20240201140459803

然后再访问刚刚的网站,可看到,已经可以成功访问。

image-20240201142422909

但我们现在是登不上去的,因为我们现在后端没有启动,并且数据库也没有放上去,我们之后继续进行后端配置以及数据库配置。

3、服务器与宝塔配置

再配置后端以及数据库之前,我们先进行服务器和宝塔的一些配置。

从上述情况我们可以看出来,我们需要管理规则,添加端口号才能够进行访问,所以我们现在先把我们项目中所用到的端口号先进行开放。

image-20240201142651381

注意:除了宝塔界面需要开放、你的服务器(我这里以阿里云为例)也需要开放这些端口

image-20240201101630362

4、后端配置

首先,你需要一个springboot项目。

  1. 把你项目中用到localhost的地方全部换为你自己服务器的ip地址

    比如我此处的跨域问题,需要改为自己服务器的ip。

    注意:你的application.yml 或者 application.properties文件里面配置的数据库的url不要改,其他的需要改为你服务器的ip(因为我们数据库可以传到本地,之后数据库操作会提到)

    image-20240201094638537

  2. 把红框中的两个文件放到项目中,修改里面的配置

    image-20240201094843116

    只需改这一个地方即可,改为你自己启动类的地址,如我此处就是com.bo.SpringbootApplication

    image-20240201095016613

    ps:这两个文件会在之后启动后端项目使用到.

  3. 以上准备好之后,我们开始打包项目,点击右侧Maven,点击package

    image-20240201095438750

    打包完成后,左侧导航栏会有target,点开可看到jar包。

    image-20240201142832933

有些人可能打包出来的文件不对劲,我们可以修改自己的pom.xml文件

 <build>
         <plugins>
 ​
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <version>3.1.0</version>
                 <executions>
                     <execution>
                         <id>make-assembly</id>
                         <phase>install</phase>
                         <goals>
                             <goal>single</goal>
                         </goals>
                         <configuration>
                             <!-- 打包生成的文件名 -->
                             <finalName>${project.artifactId}</finalName>
                             <!-- jar 等压缩文件在被打包进入 zip、tar.gz 时是否压缩,设置为 false 可加快打包速度 -->
                             <recompressZippedFiles>false</recompressZippedFiles>
                             <!-- 打包生成的文件是否要追加 release.xml 中定义的 id 值 -->
                             <appendAssemblyId>true</appendAssemblyId>
                             <!-- 指向打包描述文件 package.xml -->
                             <descriptors>
                                 <descriptor>package.xml</descriptor>
                             </descriptors>
                             <!-- 打包结果输出的基础目录 -->
                             <outputDirectory>${project.build.directory}/</outputDirectory>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
 ​
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
                 <version>3.0.2</version>
                 <configuration>
                     <excludes>
                         <exclude>*.yml</exclude>
                         <exclude>application.properties</exclude>
                     </excludes>
                 </configuration>
             </plugin>
         </plugins>
     </build>

至此,后端项目打包完毕。

然后我们把打包后的文件放到服务器上进行启动。

  1. 将-release 中的这四个文件放到服务器上,然后打开终端。

  2. cd 到刚刚的目录,然后输入 chmod u+x st.*.sh 修改文件的权限

    image-20240201152126209

  3. 输入 ./start.sh 进行运行

    image-20240201152254797

可看到,已运行成功,我们再次访问之前的网站,发现还是登不进去,这是因为我们没有配置它的数据库。

5、数据库

打开Navicate,点击左上角的连接,选择MySQL 第一步:第一个页面是常规,按照图上的标注填写

image-20240201152646224

第二步,点击 SSH ,进入下面的页面

image-20240201160038218

第三步,点击测试连接

image-20240201160100484

完成之后,我们需要把之前本地的数据库数据同步到我们新建的这个连接上。

  1. 点击工具 - 数据传输

    image-20240201161127783

  2. 点击下一步,选择 运行期间所有表,点击下一步

    image-20240201161155379

  3. 点击开始,即可完成同步

    image-20240201161248712

以上都完成后,再次访问,即可进入我们部署好的页面。

image-20240201162007043

但是,我们这里 ./start.sh 进行运行 ,当我们退出去后就会停止运行,所以我们需要让后端项目再后台进行运行,以便我们随时访问,我们可以使用 ./start.sh nohup 此命令来进行后台运行。

image-20240201162145416

我们也可以再 output.log中进行日志查看。

image-20240201162624864

至此我们已经部署完毕。

wms-web admin 123 (这是我部署上去的)

6、总结

  1. 准备好服务器以及对应环境(推荐用宝塔,简单)

  2. 前端打包

  3. 后端打包

  4. nginx配置

  5. 数据库配置

  6. 安全组规则配置

部署项目有多种方式,以上是我所使用的,仅供参考!!!

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

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

相关文章

硅谷仿制网易云小程序登录问题解决

引言&#xff1a; 尚硅谷视频中的登录拥挤问题&#xff0c;导致无法登录&#xff0c;所以&#xff0c;我去gitee上从新找了个别人搞好点网易云的api接口【也是比较出名的那个&#xff0c;不想用不行啊&#xff0c;我也试过很多方法都不行】 接口详解网址&#xff1a;网易云音乐…

Linux离线安装Telnet

前言&#xff1a;由于服务器部署在内网环境&#xff0c;不能yum安装 1.先从网站下载好我们所需要到的三个rpm包http://www.rpmfind.net/linux/rpm2html/search.php?queryxinetd&submitSearch...&system&arch image.png 三个依赖包分别是&#xff1a; -rw-r--r-- 1…

状态压缩 笔记

棋盘式的f[i][j]中表示状态的j可以是状态本身也可以是在合法状态state中的下标 用状态本身比较方便&#xff0c;用下标比较省空间 用下标的话可以开id[M]数组记录一下 蒙德里安的梦想 求把 NM的棋盘分割成若干个 12的长方形&#xff0c;有多少种方案。 例如当 N2&#xff0…

el-table动态合并

废话就不多说了&#xff0c;直接上代码&#xff01;&#xff01;&#xff01; 合并行 // 方法一 <template><div class"container"><el-table :data"dataSource" :border"true":header-cell-style"{ font-weight: normal,…

Kafka常见生产问题详解

目录 生产环境常见问题分析 消息零丢失方案 1、生产者发消息到Broker不丢失 2、Broker端保存消息不丢失 3、消费者端防止异步处理丢失消息 消息积压如何处理 如何保证消息顺序 ​问题一、如何保证Producer发到Partition上的消息是有序的 问题二&#xff1a;Partition中…

深入解剖指针篇(2)

目录 指针的使用 strlen的模拟实现 传值调用和传址调用 数组名的理解 使用指针访问数组 一维数组传参的本质 冒泡排序 个人主页&#xff08;找往期文章&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 指针的使用 strlen的模拟实现 库函数strlen的功能是求字符串…

面试经典 150 题 -- 矩阵 (总结)

总的链接 : 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 36 . 有效的数独 模拟 : 用数组模拟哈希表来判断对应的行&#xff0c;列和当前元素所在的3*3方格中是否重复出现&#xff0c;是的话&#xff0c;直接return false…

基于C/C++的MFC的IDC_MFCEDITBROWSE2控件不显示ico问题记录

打开资源文件 *.rc文件 &#xff0c;在最上方添加 #if !defined(_AFXDLL) #include "afxribbon.rc" // MFC ribbon and control bar resources #endif 如下图所示&#xff1a;

【IC设计】Windows下基于IDEA的Chisel环境安装教程(图文并茂)

Chisel环境安装教程 第一步 安装jdk&#xff0c;配置环境变量第二步 安装sbt&#xff0c;不用配置环境变量第三步 安装idea社区版第四步 离线安装scala的idea插件第五步 配置sbt换源1.切换目录2.创建repositories文件3.配置sbtconfig.txt文件 第六步 使用chisel-tutorial工程运…

亚信安慧的AntDB数据库:稳定可靠的保障

亚信安慧AntDB数据库在运营商自主可控替换项目中的成功应用&#xff0c;具有极其重要的意义。该数据库的落地&#xff0c;不仅为这一项目注入了强大的支持力量&#xff0c;还在更大程度上提升了整体的运营效能。作为一种高效可靠的数据库解决方案&#xff0c;AntDB引入了先进的…

如何通过CVE漏洞编码找到对应的CVE漏洞详情及源码修改地址

背景&#xff1a; 最近正在使用docker进行一些cve漏洞的复现&#xff0c;有时候就要通过CVE的漏洞编码&#xff0c;找到对应的漏洞详情&#xff0c;以及漏洞的源码修改 以我上一篇文章的CVE-2020-17518编码为例 Apache Flink文件上Apache Flink文件上 方法&#xff1a; 通…

Mobileye CES 2024 自动驾驶新技术新方向

Mobileye亮相2024年国际消费类电子产品展览会推出什么自动驾驶新技术? Mobileye再次亮相CES&#xff0c;展示了我们的最新技术&#xff0c;并推出了Mobileye DXP--我们全新的驾驶体验平台。 与往年一样&#xff0c;Mobileye是拉斯维加斯展会现场的一大亮点&#xff0c;让参观…

bank conflict

前置知识&#xff1a; shared memory 被分成 32 个 bank一个 warp 32 个线程每个 bank 4 byte如果同一 warp 中不同线程访问同一 bank 的不同地址则发生 bank conflict 请注意需要是一个 warp 中的不同线程&#xff01;如果一个线程访问 shared memory 的两个元素&#xff0c;…

win11安装MySql5.7

1、下载 打开下载链接&#xff1a;MySQL :: Download MySQL Installer 2、安装 2.1、安装界面 2.2、选择自定义安装 2.3、根据自己系统的位数进行选择是X64还是X86 2.4、选择安装路径 2.5、继续下一步 2.6、选择服务器专用&#xff0c;端口是3306 2.7、设置密码 2.8、设置服…

数学建模 - 线性规划入门:Gurobi + python

在工程管理、经济管理、科学研究、军事作战训练及日常生产生活等众多领域中&#xff0c;人们常常会遇到各种优化问题。例如&#xff0c;在生产经营中&#xff0c;我们总是希望制定最优的生产计划&#xff0c;充分利用已有的人力、物力资源&#xff0c;获得最大的经济效益&#…

代码随想录 Leetcode77.组合

题目&#xff1a; 代码&#xff08;首刷看解析 2024年2月1日&#xff09;&#xff1a; class Solution { public:vector<vector<int>> res;vector<int> path;void backtracing(int n, int k, int startIndex) {if (path.size() k) {res.push_back(path);re…

【Linux C | I/O模型】Unix / Linux系统的5种IO模型 | 图文详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

嵌入式学习 Day16

一. 共用体 形式&#xff1a; union 共用体名 { 成员列表; //各个变量 }; //表示定义一个共用体类型 注意&#xff1a; 1.共用体 初始化 --- 只能给一个值&#xff0c;默认是给到第一个成员变量的 2.共用体成员变量 共用体用的数据最终存储的 --…

了解Ansible自动化运维工具及模块的使用

一、Ansible的相关知识 1.1 Ansible工具的了解 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。Ansible…

aspose-words基础功能演示

我们在Aspose.Words中使用术语“渲染”来描述将文档转换为文件格式或分页或具有页面概念的介质的过程。我们正在讨论将文档呈现为页面。下图显示了 Aspose.Words 中的渲染情况。 Aspose.Words 的渲染功能使您能够执行以下操作&#xff1a; 将文档或选定页面转换为 PDF、XPS、H…