在linux中部署SpringBoot+Vue前后端分离应用

news2024/11/12 4:48:20

最近有任务需求,自己在linux中通过docker虚拟环境的方式部署了SpringBoot和Vue前后端分离的项目,现在做点总结,给需要的小伙伴分享。不足之处多多指正。

关于在linux中安装docker,可以查看博主前几篇博客按照步骤进行安装,然后再linux中安装相应的jdk这一步就不在叙述。

对于springboot后端程序,需要通过IDEA命令进行打包:

mvn clean package -Dmaven.test.skip=true     //先清除一下
mvn package Dmven.test.skip=true    //打包

打包结束后就能在项目中的target文件夹中出现相应的jar包,如下图所示:

将第一个jar包拷贝到服务器中的任意文件夹中,我这里是/proc文件夹。

然后通过命令:

java -jar XXXXX.jar

(xxxxx.jar换成具体的jar包名字),来测试jar包是否可以正常启动。可以正常启动后关闭窗口,下面采用后台启动的方式进行启动:

nohup java -jar XXXXXXX.jar > nohup.out &

通过ps aux|grep xxx.jar命令来查看jar包的相关进程,当看到该jar包的进程启动无误后,就可以在当前目录中看到nohub.out的jar包日志文件。至此springboot后端程序已经完全启动了。

下面部署前端vue应用,vue应用将在docker中进行部署。

拉取nginx的docker环境:

docker pull nginx

启动该nginx镜像

docker run --name Nginx -p 80:80 -v /home/nginx/dist:/usr/share/nginx/html  -d nginx
## --name:容器名字
## -d: 要启动的镜像的名字
## -v: /home/nginx/dist 这是宿主机(服务器)中的目录映射到nignx容器中的/usr/share/nginx/html中;

将宿主机中的文件拷贝到物理机中,保持映射的文件夹一致:

docker cp 容器id:/etc/nginx /home/etc

    其次停止并删除该容器:

docker stop 容器id
docker rm 容器id

重启镜像,并将虚拟环境和物理环境中的文件夹相互映射:

docker run --name myNginx -p 80:80  -v /home/nginx/dist:/usr/share/nginx/html -v /home/etc/nginx:/etc/nginx -d  nginx

至此nginx已经启动,进入nginx虚拟环境。后面只需要将文件拷到物理机中/home/nginx/dist文件夹下,虚拟环境中的/usr/share/nginx/html就会出现对应的文件。

通过相关命令安装工具:

apt-get update
apt-get upgrade  //更新docker环境
apt-get install openssh-server //安装openssh
apt-get install vim  //安装vim编译器

进入nginx文件夹,/etc/nginx下,通过vim nginx.conf  打开nginx.conf文件,进行相关配置

  

server {
        listen       7070;             //端口号
        server_name  xxxxxxxxx;   //服务器地址

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /opt/project/vue/;         //前端安装的路径
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }

配置结束后,进入nginx启动目录下,通过一下命令启动nginx:

./nginx -t   //查看配置信息是否正确
./nginx -s reload   //重新启动

启动后,通过本地网页就可以通过服务器的IP地址+端口号进行访问了。

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

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

相关文章

【JUC系列】ReentrantLock实现本地锁的源码分析

使用场景 public class ReentrantLockTest {private static ReentrantLock lock new ReentrantLock();public static void main(String[] args) {new Thread(()->{lock.lock();// do somethingSystem.out.println("111");try {Thread.sleep(Integer.MAX_VALUE);…

[ 华为云 ] 云计算中Region、VPC、AZ 是什么,他们又是什么关系,应该如何抉择

前几天看到一个问答帖,我回答完了才发现这个帖子居然是去年的也没人回复,其中他问了一些华为云的问题,对于其中的一些概念,这里来总结讲解一下,希望对学习华为云的小伙伴有所帮助。 文章目录区域(Region&am…

致 Tapdata 开源贡献者:聊聊 2022 年的进展和新一年的共建计划

岁末年初,在开源领域刚埋下一颗生机勃勃的种子的 Tapdata,想和正在关注我们的开发者,聊聊这一年的进展和新一年的共建计划。 2022年4月,Tapdata 宣布开源 PDK(Plugin Development Kit),将自身的…

前端js实现文件多次添加累加上传和选择删除(django+js)- 添加累加文件上传 (一)

前言 原本的多文件上传功能在选择文件时,只能通过同一范围的鼠标框选或者ctrl/shift多选取选择文件,这样选择文件很不灵活,而且在确定之后如果漏选了文件,再次点击上传按钮时会清空表单里的文件信息,只能重复之前的操…

数据库mysql调优

问题描述: mysql dba在mysql服务端启用了连接在空闲一定时间 (10分钟) 后,就自动关闭连接(连接失效)的功能,导致java端连接池在空闲一段时间后,连接被自动关闭(自动失效)。为了避免这种情况出现,可以在dbcp上配置空闲的时候检测连…

PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2、Add-in Card 它们有啥区别?这些概念你搞清楚了吗?

搞硬件或通信的“攻城狮”们,免不了要和各种通信协议及接口打交道。比如,我们经常接触PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2(NGFF)、Add-in Card这些概念,作为“攻城狮”队伍中的一员,你搞清楚它们之间的关系了吗&…

Python爬虫教你爬取csdn作者排行榜

(一)两种爬取方式介绍 1.自动化测试工具 安装好驱动(以前的selenium文章有教程),然后进行元素定位,最后数据提取,用xls表格进行持久化存储 2.requests库 利用基本方法发起请求,获得json数据进行持久化存储 本篇文章先讲解第二种&#xf…

洛谷——树与图dp与状压dp

文章目录[NOIP1996 提高组] 挖地雷题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码最大食物链计数题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码[ZJOI2006]三色二叉树题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #…

浅说 INSERT/块参照/BlockReference

在AutoCAD中使用INSERT命令插入一个块时,生成块参照实体,也叫INSERT实体,在ObjectARX中,对应类AcDbBlockReference。反正就这么一个东西,名儿还挺多,我家乡有句话叫“二嫚她婆婆俩名”,莫非这是…

数据结构(5) treap

活动 - AcWing 参考—《算法竞赛进阶指南》-lyd 目录 一、概述 二、具体操作详解 1.常见操作 2.结构定义 3.操作基础函数 (1)pushup (2) 获得一个新节点 (3)左旋右旋 (4)建…

centos上面用docker 安装nacos 1.4.1

方式一: 下载nacos本地文件 1. 去官网下载GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.2.上传到Linux服务器中cd /usr/uploadtar -zxvf nacos-serv…

二、QML工程之初始工程代码分析

接着上一讲&#xff0c;当建立完工程之后&#xff0c;IDE 会呈现如下的界面下面的代码是main.cpp&#xff0c;工程起始运行的代码段&#xff0c;具体的函数说明都在代码段里面进行了标注。#include <QGuiApplication> //主要是ui进程运行头函数&#xff0c;包含事件循环&…

【云原生】k8s图形化管理工具之rancher

内容预知 前言 1. Rancher的相关知识 1.1 Rancher的简介 1.2 Rancher与k8s的关系及区别 1.3 Rancher具有的优势 2. Rancher的安装部署 2.1 实验环境与部署图分配 2.2 具体的部署操作 &#xff08;1&#xff09;在 rancher 节点下载 rancher 镜像 &#xff08;2&#xff…

【Spring(七)】详细了解Spring的核心容器

文章目录前言容器总结前言 前面我们完成bean以及依赖注入的相关学习&#xff0c;现在我们进入到核心容器的最后一块内容了&#xff0c;也就是与容器相关操作的学习&#x1f388;&#x1f388;。 容器 前边我们获取容器是这样获取的&#x1f447;&#x1f447;。 这只是获取容器…

Vue CLI脚手架

1、Vue的开发模式 目前我们使用vue的过程都是在html文件中&#xff0c;通过template编写自己的模板、脚本逻辑、样式等。 但是随着项目越来越复杂&#xff0c;我们会采用组件化的方式来进行开发&#xff1a; 这就意味着每个组件都会有自己的模板、脚本逻辑、样式等&#xff…

凌恩生物报告升级,科研美图助力群落互作机制研究

2022年&#xff0c;在多位技术支持与生信工程师的通力合作下凌恩生物报告升级重磅升级&#xff01;扩增子分析流程项目从60到120&#xff0c;可谓是加量不加价的超值更新了&#xff01;结题报告的结果图片可直接用于文章发表&#xff0c;快一起来看看&#xff01;小小的举个例子…

pytorch【Conv2d参数介绍】

def __init__(self,in_channels: int,out_channels: int,kernel_size: _size_2_t,stride: _size_2_t 1,padding: _size_2_t 0,dilation: _size_2_t 1,groups: int 1,bias: bool True,padding_mode: str zeros # TODO: refine this type):in_channels&#xff1a;网络输入…

《Linux性能优化实战》学习笔记 Day03

04 | 零拷贝&#xff1a;如何高效地传输文件&#xff1f; 原文摘抄 文件拷贝 上下文切换的成本并不小&#xff0c;虽然一次切换仅消耗几十纳秒到几微秒&#xff0c;但高并发服务会放大这类时间的消耗。 每周期中的 4 次内存拷贝&#xff0c;其中与物理设备相关的 2 次拷贝是…

再学C语言37:函数、数组和指针

编写一个对数组进行操作的函数&#xff0c;并进行调用 一般形式举例&#xff1a; int sum(int * arr, int n); // 函数原型// 第一个参数把数组地址和类型信息传递给函数// 第二个参数把数组中元素的个数传递给函数int main(void) {...int total;total sum(array_t, 10);...…

分分钟你也能写一个自己需要的 Chrome 扩展程序

废话 对于chrome浏览器想必大家大不陌生了&#xff0c;里面的扩展程序&#xff08;本文后面称插件&#xff09;&#xff0c;多多少少也都用过吧&#xff0c;毕竟可以辅助自己的日常工作&#xff0c;娱乐等等&#xff0c;添加完之后呢&#xff0c;就会多出一些操作按钮&#xf…