【Linux】部署单体项目以及前后端分离项目(项目部署)

一、简介

以下就是Linux部署单机项目和前后端分离项目的优缺点,希望对你有所帮助。

1、Linux部署单机项目:

优点:

1.简化了系统管理:由于所有服务都在同一台机器上运行,因此可以简化系统管理和维护。
2.提高了性能:由于没有网络延迟和其他因素的影响,所以可以提高系统的性能。
缺点:

1.容易出现故障:如果一台机器发生故障,那么整个系统都会受到影响。
2.难以扩展:随着业务的发展,可能需要增加更多的服务器来处理请求,但是这在单机项目中是很难实现的。

2、前后端分离项目: 

优点:

1.易于扩展:由于前端和后端是分开的,所以可以根据需求添加或删除服务器,从而更容易地进行扩展。
2.更高的灵活性:前端和后端可以独立开发和测试,这样可以更快地推出新的功能。
缺点:

3.复杂性增加:由于需要管理和协调多个服务器,所以可能会增加系统的复杂性。
4.性能问题:由于需要通过网络传输数据,所以可能会出现网络延迟等问题,影响系统的性能。

二、单体项目 

在部署项目到虚拟机之前我们要把我的sql数据和war包在自己的电脑上进行部署,看有没有问题在进行到虚拟机上面进行部署。

 1、共享文件

主机连接虚拟机共享数据文件和war包项目。 

 2、运行sql文件

找到sql文件,在数据库里面运行我们的sql文件。

文件选择我的sql文件路径;

3、解压项目放入tomcat 

解压项目(我们的war包)放入tomcat服务器或者放入任何的其他服务器。我这里以tomcat为例:

4、打开tomcat服务 

在虚拟机中找到tomcat服务器的bin目录下的startup.bat,双击运行后。

5、启动项目 

回到我们的主机在浏览器中输入ip地址+访问路径即可访问。

6、出现用户不存在

 如果你的项目运行登录的时候。如果出现用户不存在,可以查看你虚拟机里面的报错,大概是这个项目的配置文件,配置sql的数据库不对

 

我们在我们放war包位置,可以看到我们的项目被解压出来了,我们可以在里面找到我们的配置文件,更改我们的数据库名。

 

我这里的配置文件名是config.properties。

看这些位置是否与虚拟机里的一样。

 更改后访问重启tomcat服务,重新访问。

 三、前后端分离项目部署

1、导入项目

还是一样把我们的war包放入tomcat中的webapp里面。

2、查看配置 

运行我们的tomcat解析我们的项目之后,找到我们的配置数据库的文件。

打开tomcat服务

启动项目

 3、运行sql文件

在我们的虚拟机里面新建数据库,运行我们所需要的sql文件。(和单体项目一样)

更改我们虚拟机的配置后重启tomcat。

 4、在虚拟机配置node

下载配置查看node.jsp环境配置 

 5.启动

  1. 启动tomcat
  2. 在我们的spa项目里面cmd命令打开窗口,输入命令npm run dev
  3. 前后端分离的项目如果直接这么访问就会访问不到,只有虚拟机自己才可访问

5.1、解决一

利用nginx做反向代理处理该问题,在nginx文件中找到nginx.conf 文件,将文件种的 location 进行修改。

nginx: download

 
#user  nobody;
worker_processes  1;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    #gzip  on;
 
    server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            proxy_pass   http://localhost:8081;
        }
 
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
 
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
 
 
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
 
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
 
 
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
 
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
 
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
 
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
 
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
 
}
启动1

nginx根目录下输入cmd进入命令窗口输入 nginx.exe -s reload重启

启动2

双击启动文件 

最后就可以进行访问了!!!

 5.2、解决二

在spa项目中找到config文件下的index.jshost:'localhost'改为0.0.0.0

 最后也可以进行访问了!!!

 

 

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

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

相关文章

【面试经典150 | 栈】最小栈

文章目录 Tag题目来源题目解读解题思路方法一:辅助栈方法二:一个栈方法三:栈中存放差值 其他语言python3 写在最后 Tag 【设计类】【栈】 题目来源 155. 最小栈 题目解读 本题是一个设计类的题目,设计一个最小栈类 MinStack() …

系统架构设计师之使用McCabe方法可以计算程序流程图的环形复杂度

系统架构设计师之使用McCabe方法可以计算程序流程图的环形复杂度

【算法】滑动窗口题单——3.不定长滑动窗口(求最短/最小)⭐ 删除最短的子数组使剩余数组有序

文章目录 209. 长度最小的子数组O(n)滑动窗口O(nlogn) 前缀和二分查找 1234. 替换子串得到平衡字符串1574. 删除最短的子数组使剩余数组有序⭐枚举左端点,移动右端点枚举右端点,移动左端点 76. 最小覆盖子串 题单来源:https://leetcode.cn/pr…

计算机网络-应用层(2)

一、DHCP 当需要跨越多个网段提供DHCP 服务时必须使用DHCP 中继代理, 就是在DHCP 客户和服务器之间转发DHCP 消息的主机或路由器。 DHCP 服务端使用UDP 的67号端口来监听和接收客户请求消息, 保留UDP 的68号端口用于接收来自DHCP 服务器的消息回复。 在…

linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法

linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法 linux上java -jar方式运行定期自动清理nohup.out文件的内容**验证**定时器crontab使用时注意事项 linux上java -jar方式运行 参考:https://blog.csdn.net/qq_42169450/arti…

UVa140 Bandwidth(带宽)

1、题目 2、题意 给出一个 n ( n ≤ 8 ) n(n≤8) n(n≤8)个结点的图G和一个结点的排列,定义结点 i i i 的带宽 b ( i ) b(i) b(i) 为 i i i 和相邻结点在排列中的最远距离,而所…

nodejs+vue旅游推荐系统-计算机毕业设计

本文首先介绍了旅游推荐系统的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图…

3.加载天地图

愿你出走半生,归来仍是少年! 上一篇文章构建出来基础的白球,现在需要给它添加底图啦。先上最常用的天地图。 1.天地图 天地图做过Gis开发的应该都知道,需要先申请key然后才能使用。然后天地图是基于XYZ的标准进行切片的,所以直接…

Web:探索 SpreadJS强大的在线电子表格库

1、概述 SpreadJS 是葡萄城结合 40 余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件,基于 HTML5,兼容 450 多种 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,SpreadJS 在界面和功能上与 Excel 高度类似,但又不局限于 Excel,而是…

基于华为云 IoT 物联网平台实现家居环境实时监控

01 智能家居环境监测 智能家居环境监测采用 Ruff 开发板作为主控,串口线连接温湿度传感器 DHT11 和空气质量传感器 SDS011,每5分钟采集一次数据,通过 MQTT 协议发送到华为云 IoT 物联网平台,并基于数据分析服务实时计算出整个家庭…

Pytorch实现深度学习常见问题

RuntimeError: stack expects each tensor to be equal size, but got [3, 300, 300] at entry 0 and [3, 301, 301] at entry 24 这里的问题出现的原因肯定是在数据预处理处,如下图,当数据使用不同的transforms处理方式时,会导致数据的尺寸大…

[17]JAVAEE-HTTP协议

目录 一、什么是HTTP协议 什么时候会用到HTTP协议? HTTP协议的工作流程 二、HTTP的报文格式 抓包 HTTP请求报文格式 1.首行 2.header 常见键值对: 3.空行 4.正文(body)(有的时候可以没有) HTTP…

AcWing 1.2.1 最长上升子序列模型 + 动态规划 + 图解(详细)

(1)acwing 4557. 最长上升子序列 4557. 最长上升子序列 - AcWing题库 给定一个长度为 N 的整数序列 a1,a2,…,aN。请你计算该序列的最长上升子序列的长度。上升子序列是指数值严格单调递增的子序列 输入格式 第一行包含整数 N第二行包含 N个整数 a1,a…

TEMU电器等产品要求提供CE-LVD,不接受CE-EMC

最近,TEMU平台对CE资质要求越来越严格,针对CE资质又提出了两点新要求。首先,TEMU平台要求提供正式的CE证书,且必须有签发实验室的盖章或者签字。这一要求是为了确保产品符合欧洲市场的安全标准,也是为了保护消费者的利…

Tomcat的动静分离

一、动态负载均衡 3、台虚拟机模拟&#xff1a; 代理服务器&#xff1a;51 tomcat动态页面&#xff1a;53,54 关闭防火墙和安全机制 配置代理服务器&#xff0c;由于做的是七层代理&#xff0c;所以要在http模块配置 配置前端页面 <!DOCTYPE html> <html> <…

解决node项目一个极度困难的捕获异常却无法读取异常信息的问题

这个项目是集成了第三方NeteaseCloudMusicApi项目的接口代码&#xff0c;我没有直接使用它的接口&#xff0c;因为需要再跑一个npm run开个端口&#xff0c;感觉很麻烦。 所以下定决心&#xff0c;使用拆分代码的方式&#xff0c;硬生生将这个api项目的部分api接口代码集成到了…

构造类型详解及热门题型结构体大小的计算

在编写程序时&#xff0c;简单的变量类型已经不能满足程序中各种复杂数据的需求&#xff0c;因此c语言还提供了构造类型的数据&#xff0c;构造数据是有基本数据按照一定的规则组成的。 目录 结构体类型的概念 结构体变量的定义 结构体变量的初始化 结构体变量的引用 结构…

软件工程——期末复习知识点汇总

本帖的资料来源于某国内顶流高校的期末考试资料&#xff0c;仅包含核心的简答题&#xff0c;大家结合个人情况&#xff0c;按需复习~ 总的来说&#xff0c;大层面重点包括如下几个方面&#xff1a; 软件过程需求工程 设计工程软件测试软件项目管理软件过程管理 1.掌握软件生命…

flutter 使用FlutterJsonBeanFactory工具遇到的问题

如下图&#xff0c;使用FlutterJsonBeanFactory工具生成的数据类 但是其中 生成的 import package:null/&#xff0c;导致的错误&#xff1a;Target of URI doesn’t exist: ‘package:null/generated/json/asd.g.dart’ 尝试过的方法&#xff1a; 手动添加包名&#xff0c;…

Map集合 遍历:lambda方式

package day01;import java.util.*;public class Mapday1 {public static void main(String[] args) {/* HashMap 无序 不重复&#xff0c;会覆盖前面 无索引*/System.out.println("--------------------");Map<String, Integer> map new HashMap<>();m…