最近做了一个springboot+vue的前后端分离项目,把它部署到Linux虚拟机上。下面是我的步骤和遇到的问题,需要的朋友可以看下(看的时候注意要全部看完到底部,因为我习惯是把我遇到的问题放到最后面的,不是到了哪一步遇到了问题就顺便讲下)。

1.打包前后端项目

后端我使用的是idea编辑器,所以打包只要点击下图就可以了。

就生成了下面这个jar包

好,后端打包完成,接下来打包前端项目。

我前端使用的编辑器是webstorm。打包方式也很简单,只要在终端中执行:npm run build命令即可,如下图

之后便会生成一个  dist 文件夹,如下图

2.将文件放到虚拟机上

在Linux的目录下 mkdir 建一个放这两个打包文件的文件夹(我的是marble),之后用rz命令,或者 filezilla 等上传工具,找到你本地的那个后端jar和前端dist,上传到marble

如下图:

3.我这里使用nginx进行代理,把前端部署到nginx上。那你需要在你的Linux上安装一个nginx,nginx的安装我就不再赘述,没有安装朋友的可以参考这个:

https://www.cnblogs.com/qwg-/p/13054715.html

安装完成之后,别着急,需要重新配置一下nginx的配置文件。

说明:这里要讲下,前端是通过nginx代理的,后端启动jar包,前端的请求使用nginx代理发送到后端.

找到你的nginx的安装目录下的 conf/nginx.conf文件(默认的位置是:/usr/local/nginx/conf 下的nginx.conf),配置成以下即可。

稍微解释一下:

upstream javaboy.org{
server 127.0.0.1:8088;
}

这个javaboy.org只是个名字,你随便怎么起都可以,同理,下面的proxy_pass http://javaboy.org用的就是上面的这个,也就是说,我们使用nginx的默认的80端口,访问这个接口的时候,nginx就会给把请求代理到后端的那个8088接口上。这个8088是后端项目的端口

location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff|html) {
#所有静态文件直接读取硬盘
root /marble/dist/;
expires 30d; #缓存30天
}

这个就是说,以 js|css|ico|png|jpg|eot|svg|ttf|woff|html 这种结尾的页面,就不用请求后端,直接前端展示。

那下面的root /marble/dist/,就是我上面说的我的前端打包成的 dist 在Linux的位置,这个要改成你自己的前端打包文件 dist 在Linux的路径。

配置完成以后记得要重新启动nginx,配置文件才会生效。

4.启动后端的jar包

这里先进入到你的jar包所在位置(我的是marble文件夹),执行命令:nohup java -jar xxx.jar &

这个命令如果不太了解的可以看下这个:https://www.cnblogs.com/qingmuchuanqi48/p/11723541.html

执行这个命令以后会有个下一行:

nohup: 忽略输入并把输出追加到"nohup.out,这个意思是说你的启动项目日志在你的jar包同级目录nohup.out文件内(执行上面的启动命令,它会自动给你创建一个nohup.out文件),你可以通过vi  nohup.out 看到你的日志。

jar包启动完成,nginx启动完成,就可以在你window的浏览器上输入:

这里说明一下,前端的IP是你的Linux的IP ,为什么不写端口,因为我们使用的是nginx默认的80端口,后面的index.html页面是因为vue项目是一个单页面应用,也就是下图的:

等项目出现页面,成功请求到后端的数据,就说明部署成功!

下面说下我遇到的问题

问题1:

我用的数据库不是我Linux上的数据库,而是我window本地mysql数据库,然后我把后端springboot的配置url 的地址换成window的IP地址

,发现报一个没有访问权限的错误,错误的截图我忘记写了,但是解决方案我记得,在数据库执行以下SQL:

GRANT ALL `user`PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY '123456' WITH GRANT OPTION;

FLUSH PRIVILEGES

说明一下: user是你的用户登录的那张表的表名,后面的123456是你的root用户的密码。

问题2

假如一直登录不成功,可以尝试关闭一下你的window防火墙和Linux的防火墙,因为比如我的mysql在window,而我window浏览器需要访问Linux,那么这两者的防火墙可能

会阻挡住互相的访问。

前后端分离项目部署到Linux虚拟机的更多相关文章

  1. nginx+vue+uwsgi+django的前后端分离项目部署

    Vue+Django前后端分离项目部署,nginx默认端口80,数据提交监听端口9000,反向代理(uwsgi配置)端口9999 1.下载项目文件(统一在/opt/luffyproject目录) (1 ...

  2. Docker环境下的前后端分离项目部署与运维

    本教程将从零开始部署一个前后端分离的开源项目,利用docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能.高负载.高可用的部署方案.包括了MySQL集群.Redis集群.负载均衡.双机 ...

  3. Django前后端分离项目部署

    vue+drf的前后端分离部署笔记 前端部署过程 端口划分: vue+nginx的端口 是81 vue向后台发请求,首先发给的是代理服务器,这里模拟是nginx的 9000 drf后台运行在 9005 ...

  4. 云计算:Ubuntu下Vue+Springboot前后端分离项目部署(多节点)

    一.机器准备 首先准备三台机器: 我是一台WINDOWS系统主机,在WINDOWS里的 VMware 中安装两台Ubuntu系统虚拟机 如果你的虚拟机只有 CentOS,可以参考这篇文章:https: ...

  5. Docker环境下的前后端分离项目部署与运维(九)后端项目部署与负载均衡

    数据库准备 建立数据库 renren_fast ,然后运行renrenfast项目中的db文件夹内的脚本 -- 菜单 CREATE TABLE `sys_menu` ( `menu_id` bigin ...

  6. Docker环境下的前后端分离项目部署与运维(六)搭建MySQL集群

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信 ...

  7. Docker环境下的前后端分离项目部署与运维(七)Redis高速缓存

    Redis高速缓存 利用内存保存数据,读写速度远超硬盘:可以减少I/O操作,降低I/O压力. 发红包.抢红包的数据可以存在高速缓存中,加快处理速度,不需要经过数据库 淘宝首页一些优惠活动商品等热数据可 ...

  8. Docker环境下的前后端分离项目部署与运维(十一)Docker Swarm技术

    Docker Swarm技术 docker swarm技术(之前的docker集群都是在 一个虚拟主机上的,但是如果这个主机挂掉了over了,docker技术就是多个虚拟主机形成一个集群) Swarm ...

  9. Docker环境下的前后端分离项目部署与运维(十二)使用Portainer管理Docker

    安装 docker hub地址:https://hub.docker.com/r/portainer/portainer/ # 每台服务器都要安装 docker pull portainer/port ...

随机推荐

  1. 华为RH2288H服务器引导ServiceCD安装Windows Server操作系统

    安装准备 ServiceCD光盘. Windows操作系统安装光盘. 物理光驱. 使用虚拟控制台远程安装操作系统时,需要准备以下软件: ServiceCD光盘或ServiceCD ISO文件. Win ...

  2. [转帖]Linux 下解压 rar 文件

    转至:https://www.cnblogs.com/jinanxiaolaohu/p/13824185.html https://www.cnblogs.com/xuyaowen/p/unrar_f ...

  3. (转载)虚拟化(1):进程概述(The Process)

    转自:https://zhuanlan.zhihu.com/p/37917981 这一章主要是对如下问题的解释. 1.Process(进程)是什么? 简单说process就是一个运行中的程序. 2.怎 ...

  4. Python 并发编程(下)

    Python 并发编程(下) 课程目标:掌握多进程开发的相关知识点并初步认识协程. 今日概要: 多进程开发 进程之间数据共享 进程锁 进程池 协程 1. 多进程开发 进程是计算机中资源分配的最小单元: ...

  5. 『德不孤』Pytest框架 — 11、Pytest中Fixture装饰器(一)

    目录 1.Fixture装饰器的用途 2.Fixture参数说明 3.Fixture装饰器简单应用 4.yield执行后置函数 1.Fixture装饰器的用途 做测试前后的初始化设置,如测试数据准备, ...

  6. 记录一次docker容器内修改my.cnf配置文件max_allowed_packet参数的过程

    1. 问题背景 在一次新版本功能开发完毕,配合测试的过程中,测试反馈某个XxlJob定时任务一直执行失败,在分析了日志之后,找到了报错的原因: Packet for query is too larg ...

  7. NTFS权限概述

    NTFS权限概述 NTFS是我常见的一种磁盘格式,在Windows系统中使用广泛,它打破了FAT的局限性.在我使用ntfs格式分区的时候经常会涉及到ntfs权限设置问题,来帮助我们对文件的处理.那么什 ...

  8. 还不会用springboot写接口?快看这里,手把手操作,一发入魂~

    1.springboot简介 Spring Boot 可以轻松创建可以"直接运行"的独立的.生产级的基于 Spring 的应用程序. 特征 创建独立的 Spring 应用程序 直接 ...

  9. github打开之后下载缓慢或者下载不了问题的解决

    我是一点击下载就会显示下载不了,然后按照网上的教程看的修改hosts文件.大家可以先用这个方法,如果还是不行就可以按照以下操作. 1.登录https://gitee.com/(没有账号的先注册).2. ...

  10. Vue3+ElementPlus的一套开源前台+后台管理模板

    Vue-Element-Faster 基于最新版vue.js 3.x与element-plus2.x实现的一套前台展示系统.后台管理系统模板,自带权限管理模块. API接口基于SpringBoot2. ...