本文介绍Spring Boot、Vue 、Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库。按照本文进行项目部署,不迷路。

1. 前言

典型的软件开发,经过“需求分析”,“概要设计”,“详细设计”,“开发及单元测试”,“前后端联调”,“生产环境上线”。到了发布到生产环节的环节,紧张的神经,终于可以松一口气了!!!

且慢,部署也是很重要的一环,稍有不慎就会“前功尽弃”。

开发中,每个人的开发环境、工具可能都不同。目前大部分人用Windows(Win 10)开发,部分用Mac系统开发,还有极少数用Linux系统开发。但,为了运行的稳定,开发的系统大部分都部署在Linux平台。本文采用Centos 7部署Spring Boot项目,并介绍前后端项目的打包和部署。

2. 部署过程说明

1)开发环境说明

本着一切为了“开发效率”,在项目开发的时候:

后端采用了IntelliJ IDEA作为Spring Boot的开发工具(其实用Eclipse也是Ok的),用了典型“controller、service、dao三层架构”;

前端采用Vs Code作为Vue及Vue Element的开发工具,用webpack进行项目打包,“地球人都知道,这里就不多啰嗦了”;

用Git作为分布式版本控制系统;

Mysql数据;

用mybatis作为持久层框架。

2)Centos 7安装Jdk,MariaDB

Centos 7操作系统的安装,略!网上有大量的教程,不再赘述。

  • 安装Jdk环境

    最简单的方式,莫过于用yum安装,一个命令搞定(千万别告诉我你还在用32位系统):

    yum install java-11-openjdk.x86_64

  • 安装MariaDB

    [注意] 一般情况下Linux安装的时候会包含Mysql,这将导致MariaDb安装不成功。

    首先运行如下命令检查是否有Mysql:

    rpm -qa | grep mariadb

    如果系统里面预装了Mysql,则先卸载:

    yum remove mysql mysql-server mysql-libs compat-mysql51

    然后添加源(都2020年了,不会用vi,拿什么来拯救你):

    vi /etc/yum.repos.d/MariaDB.repo

    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.2.4/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1

    安装MariaDb:

    yum -y install MariaDB-server MariaDB-client

    启动MariaDb服务:

    systemctl start mariadb #启动服务

    加入开机启动:

    systemctl enable mariadb #设置开机启动

3)开放防火墙端口

默认情况下,防火墙拦截是不能访问的,此处我们开放80、22端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --zone=public --add-port=22/tcp --permanent

[注意] 需要重启防火墙,命令是:

firewall-cmd --reload

查看是否添加成功,这里我就不截图演示了:

firewall-cmd --zone=public --list-ports

4) 前后端打包及部署

忙碌了大半天,准备工作终于做好了。激动人心的时刻终于要来了!!!

  • 前端项目打包

    前端项目采用webpack进行管理,编译非常简单,也是一个命令搞定(so easy!!!):

    npm run build

    运行该命令后,会在项目的根文件夹下生产一个dist目录。

  • 后端项目打包

    将前端项目拷贝到springboot项目的resources的static目录下,然后运行mvn clean package构建项目,即可生成一个项目的jar文件,此处文件名为“myproject.jar”(该名称可以在pom文件中进行设定)。

  • 数据库部署

    安装MariaDb后,默认root用户是没有密码的,此时通过mysql -uroot命令登录到MariaDB,然后通过如下命令修改密码为654321

      mysql> use mysql;
    mysql> update user set password=password('654321') where user='root' and host='localhost';
    mysql> flush privileges;

    之后就可以导入数据库脚本了,我是通过Navicat客户端操作的。当然还有其他的工具,需要经过“大象装冰箱”三步走:

    新建数据库,设置编码utf-8,导入Sql文件。

  • 运行并见证奇迹

    我们通过如下命令运行项目,如未报错,则可以通过http://ip访问项目:

    nohup java -jar myproject.jar >log.txt &

3. 本文总结

项目经过辛苦的开发,终于进入上线,试运行。大公司一般会有专门人员负责部署工作,一般的小公司,开发人员要“全栈”。从需求,开发,测试,部署,等等都要负责。

此文不涉及自动化部署,也不谈docker等方式部署。

传统工艺,纯手工打造,值得拥有!

本文是个人项目部署的经验总结,结合了互联网上众多成功案例,不敢独自居功。

如果您阅读本文后哪怕有一丢丢收获,请不要吝啬你手中关注点赞的权力,谢谢!

一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)的更多相关文章

  1. 3步轻松搞定Spring Boot缓存

    作者:谭朝红 前言 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能.在Spring Boot应用程序中,我们可以通过Spring Caching来快速 ...

  2. Spring Boot +Vue 项目实战笔记(三):数据库的引入

    这一篇的主要内容是引入数据库并实现通过数据库验证用户名与密码. 一.引入数据库 之前说过数据库的采用是 MySQL,算是比较主流的选择,从性能和体量等方面都比较优秀,当然也有一些弊端,但数据库不是我们 ...

  3. 一文搞定 Spring Data JPA

    Spring Data JPA 是在 JPA 规范的基础上进行进一步封装的产物,和之前的 JDBC.slf4j 这些一样,只定义了一系列的接口.具体在使用的过程中,一般接入的是 Hibernate 的 ...

  4. Spring Boot +Vue 项目实战笔记(一):使用 CLI 搭建 Vue.js 项目

    前言 从这篇文章开始,就进入真正的实践了. 在前端项目开发中,我们可以根据实际情况不同程度地使用 Vue.利用 Vue CLI(或写成 vue-cli,即 Vue 脚手架)搭建出来的项目,是最能体现 ...

  5. 一行配置搞定 Spring Boot项目的 log4j2 核弹漏洞!

    相信昨天,很多小伙伴都因为Log4j2的史诗级漏洞忙翻了吧? 看到群里还有小伙伴说公司里还特别建了800+人的群在处理... 好在很快就有了缓解措施和解决方案.同时,log4j2官方也是速度影响发布了 ...

  6. Spring Boot +Vue 项目实战笔记(二):前后端结合测试(登录页面开发)

    前言:关于开发环境 每位 Coder 都有自己偏好的开发工具,从大的方面划分主要有文本编辑器流和 IDE 流两种,我有一段时间也喜欢用编辑器(Sublime Text.Vim),但对我来说开发效率确实 ...

  7. 一文搞定 Spring事务

    Spring 事务 上文 使用SpringJDBC 1.JDBC事务控制 ​ 不管你现在使用的是那一种ORM开发框架,只要你的核心是JDBC,那么所有的事务处理都是围绕着JDBC开展的,而JDBC之中 ...

  8. 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  9. 两个开源的 Spring Boot + Vue 前后端分离项目

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

随机推荐

  1. java什么叫面向对象?

    面向对象(Object-Oriented,简称OO)就是一种常见的程序结构设计方法. 面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的 ...

  2. Python--day41--线程池--python标准模块concurrent.futures

    1,线程池代码示例:(注:进程池的话只要将以下代码中的ThreadPoolExecutor替换成ProcessPoolExecutor即可,这里不演示) import time from concur ...

  3. Vue的事件修饰符

    转载于:https://www.cnblogs.com/xuqp/p/9406971.html 事件处理 如果需要在内联语句处理器中访问原生DOM事件.可以使用特殊变量$event,把它传入到meth ...

  4. Springboot学习笔记(一)—— 安装

    springboot越来越流行了,相比较于springMVC,springboot采用了一种约定大于配置的理念,可以一键安装,一键运行,一键部署,内置tomcat,省去了一大堆配置的时间,并且,spr ...

  5. P1052 国王放置问题

    题目描述 在n*m的棋盘上放置k个国王,要求k个国王互相不攻击,有多少种不同的放置方法.假设国王放置在第(x,y)格,国王的攻击的区域是:(x-1,y-1), (x-1,y),(x-1,y+1),(x ...

  6. 【NOIP数据结构专项】单调队列单调栈

    [FZYZ P1280 ][NOIP福建夏令营]矩形覆盖 Description 有N个矩形,矩形的底边边长为1,且均在X轴上,高度给出,第i个矩形的高为h[i],求最少需要几个矩形才能覆盖这个图形. ...

  7. Trendalyzer is an information visualization software

    Trendalyzer is an information visualization software for animation of statistics that was initially ...

  8. Python10_代码规范和可读性

    养成好的编程习惯和方法对提升代码可读性至关重要. 1.类.模块.包:不要用下划线,命名要简短 2.类:命名最好以大写开头 3.模块.包:用小写单词 4.变量.函数.方法:可以用下划线提高可读性,尽量都 ...

  9. Python之time模块和datatime模块

    import time time.sleep(5) #休眠 time.time() #返回系统时间戳 utc时间秒数 time.ctime() #返回字符串时间格式,也可以传入参数转换为字符串时间ti ...

  10. flask配置详解

    直接修改config对象 flask会有一个可用的配置对象保存着载入的配置值: Flask 对象的 config 属性,这是 Flask 自己放置特定配置值的地方,也是扩展可以存储配置值的地方.但是, ...