本文介绍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. Django入门5--URL传递参数

  2. mpvue的坑,持续更新-.-

    mpvue... 坑 怎么说呢,去github看一下,发现还是有很多问题没有解决... 不支持filter 亲,到现在还没有支持filter哦.只能用替代方法了,用computed或者渲染前先处理数据 ...

  3. js基础——函数

    1.函数声明:通过函数可封装任意多条语句,且可在任意地方.任何时候调用执行. eg. function box(){//无参函数      alert("只有函数被调用,我才会被执行&quo ...

  4. P1051 八皇后问题

    题目描述 在国际象棋中,皇后是同时具备象和车的攻击范围的,它可以横竖移动,也可以斜着移动.那么在一个8*8的标准国际象棋棋盘中,我们要放入8个皇后,同时皇后之间无法互相攻击,问有多少种皇后的放置方法. ...

  5. linux进程一个阻塞 I/O 的例子

    最后, 我们看一个实现了阻塞 I/O 的真实驱动方法的例子. 这个例子来自 scullpipe 驱 动; 它是 scull 的一个特殊形式, 实现了一个象管道的设备. 在驱动中, 一个阻塞在读调用上的 ...

  6. JavaScript 面向对象的拖拽

    一.body <div id="box"></div> 二.css <style> #box { position: abaolute; top ...

  7. jdbc的URL配置

    Microsoft SQL ServerMicrosoft SQL Server JDBC Driver (一般用来连接 SQLServer 2000)驱动程序包名:msbase.jar mssqls ...

  8. 002.MFC_对话框_静态文本_编辑框

    一.建立 名为dialogAndCtl的MFC工程,并添加如图控件 1.将上方static text 控件 Caption属性设置为在文本框中如数文本,可以统计字符 2.edit control控件属 ...

  9. C++的特殊预处理定义#、##和#@

    c/c++的预处理定义: 一.Stringizing Operator (#) 在c和c++中数字标志符#被赋予了新的意义,即字符串化操作符.其作用是:将宏定义中的传入参数名转换成用一对双引号括起来的 ...

  10. 前端——css属性方法

    目录 标签快捷写法 宽和高 字体 1.文字字体 2.字体大小 3.字体粗细 4.字体颜色 5.字体对齐 6.文字下划线控制 7.文字首行缩进 8.字体英文换大写 背景属性 1.背景颜色 2.背景图片 ...