【Linux】部署及发布单机项目及前后端分离的项目

news2024/12/25 9:02:46

目录

一、讲述

1. 为什么

2. 要求

二、单机项目

1. 本机测试

2. 部署

三、前后端

1. 准备

2. 部署


一、讲述

1. 为什么

实施部署和发布项目的目的是将软件开发的成果转化为可用的产品或服务,以满足用户的需求。以下是实施部署和发布项目的一些重要原因:

1. 提供可用的产品:通过实施部署和发布项目,可以将软件开发的成果转化为可用的产品或服务,使用户能够使用和享受软件的功能和特性。

2. 满足用户需求:部署和发布项目是为了满足用户的需求和期望。通过将软件部署到生产环境中,用户可以获得他们所期望的功能和服务。

3. 验证和测试:部署和发布项目是验证和测试软件的重要环节。在部署和发布之前,需要进行各种测试,包括功能测试、性能测试、安全性测试等,以确保软件的质量和稳定性。

4. 改进和优化:通过实施部署和发布项目,可以获得用户的反馈和意见,从而改进和优化软件。用户的反馈可以帮助开发团队了解软件的缺陷和不足之处,并进行相应的改进和优化。

5. 提高竞争力:部署和发布项目可以帮助企业提高竞争力。通过将软件产品或服务提供给用户,企业可以满足用户的需求,增加用户的满意度,从而提高企业的竞争力。

总之,实施部署和发布项目是将软件开发转化为可用产品或服务的关键步骤,可以满足用户需求,改进软件,提高竞争力。

2. 要求

当实施部署和发布项目时,可能会有以下一些常见的项目要求:

1. 硬件和软件要求:确定项目所需的硬件设备和软件工具,包括服务器、数据库、操作系统、开发工具等。

2. 网络要求:确定项目所需的网络环境,包括网络带宽、网络拓扑结构、网络安全等。

3. 部署环境要求:确定项目所需的部署环境,包括生产环境、测试环境、开发环境等。

4. 安全要求:确保项目在部署和发布过程中的安全性,包括数据加密、访问控制、漏洞修复等。

5. 可伸缩性要求:确定项目的可伸缩性需求,以便在用户增长或负载增加时能够扩展系统的容量和性能。

6. 可用性要求:确保项目在部署和发布后能够持续可用,包括故障恢复、备份和恢复策略等。

7. 性能要求:确保项目在部署和发布后能够满足性能需求,包括响应时间、并发用户数、吞吐量等。

8. 用户培训要求:确定项目所需的用户培训计划和材料,以确保用户能够正确使用和操作软件产品或服务。

9. 文档要求:确定项目所需的文档和说明,包括用户手册、技术文档、操作指南等。

10. 遵循标准和法规要求:确保项目在部署和发布过程中遵循相关的标准和法规,包括数据保护法规、隐私法规等。

以上是一些常见的项目要求,具体的要求可能会根据项目的性质、行业和组织的需求而有所不同。在实施部署和发布项目之前,需要明确和定义这些要求,并确保项目在实施过程中满足这些要求。

二、单机项目

当我们拿到已开发完的项目后,首先需要在我们自己的主机上进行测试,开发完的项目是否存在一些问题。

拿到开发完的项目之后,进行解压,会有如图几个文件 : 

其中是数据库脚本及开发完成的项目

1. 本机测试

在主机上的数据库先测试数据库脚本有没有问题,随机选择一个数据库对数据脚本进行导入

如图说明没有问题 : 

在将开发完项目的wer,复制到主机的tomcat下的webapps目录中

如图

之后tomcat的bin目录下,找到startup.bat文件双击进行启动tomcat

如图 : 

开启后,在浏览器中进行路径服务,该路径是根据开发项目的请求路径进行输入访问的,

首先是进入导入页面,登入成功后,根据项目需求看看里面的功能有没有错误。

2. 部署

将主机远程连接到虚拟机,在虚拟机里面进行项目的部署,如果有不知道的可以看我博客中:

【Linux】安装配置虚拟机及虚拟机操作系统的安装 之 主机连接虚拟机icon-default.png?t=N7T8https://blog.csdn.net/SAME_LOVE/article/details/134037376?spm=1001.2014.3001.5501

之后在虚拟机中文件共享,并将开发完成的项目拷贝到虚拟机的文件中,进行

将单机项目进行解压,将wer的项目包放到虚拟机的tomcat的webapps目录中。

到主机数据库中,找到连接了虚拟机的数据库,创建与单机项目中的数据库名称一样的数据库,并且将数据库脚本导入到数据库中。

tomcat的bin目录下,找到startup.bat文件双击进行启动tomcat

在主机的浏览器中进行访问虚拟机中部署的项目,访问的请求地址中需要增加虚拟机的IP,可以进行访问说明完成部署。 

如图 : 

 如果登入不上,很有可能是数据库的密码和项目配置的数据库密码不一致,在tomcat已开启的项目中进行修改,找到项目中配置数据库密码的配置文件,在里面进行修改密码即可:

列如 : ( tomcat/webapps/ssm/WEB-INF/classes )

如图 :

三、前后端

1. 准备

在虚拟机中,将后台项目解压,解压后将后端项目的wer包放到tomcat的webapps目录中。

并且将后端项目的数据库,通过主机将数据表导入进虚拟机的数据库,当然,需要数据库的名称是很后端的数据库配置的名称一致,不一致可以新创建一个数据库,在导入数据。

后端准备好后,就是前端了

将node.js下载安装好,并且在环境变量里面进行配置好,然后配置npm全局模块路径和cache默认安装位置,以及配置淘宝源,如果不知,可以在我博客中有更详细的教程 :

Vue路由的使用及node.js下载安装和环境搭建icon-default.png?t=N7T8https://blog.csdn.net/SAME_LOVE/article/details/133122405?spm=1001.2014.3001.5502

2. 部署

在虚拟机中开启tomcat,并且在项目的前端项目的跟目录输入启动命令。

在前端项目的根路径,cmd打开窗口,输入以下命令启动:

npm run dev

如图:

在此呢,会发现一个问题。在主机中的浏览器不能访问虚拟机中的前端项目。

是因为主机在虚拟机中的前端项目的被端口限制了的问题。

解决以下问题呢,有一些两种方法可以解决。

如图:

 

第一种

利用nginx做反向代理处理该问题

nginx介绍

Nginx是一款高性能的Web服务器和反向代理服务器,它可以处理高并发的请求,支持多种协议和编程语言,具有高度的可扩展性和稳定性。Nginx最初是由Igor Sysoev编写的,于2004年首次发布。

Nginx的主要特点包括:

1. 高性能:Nginx采用了事件驱动的异步非阻塞模型,能够高效地处理大量的并发请求,同时占用较少的系统资源。

2. 反向代理:Nginx可以作为反向代理服务器,将客户端的请求转发到后端的应用服务器,实现负载均衡和高可用性。

3. 静态文件服务:Nginx可以快速地提供静态文件的服务,如HTML、CSS、JavaScript等。

4. 缓存加速:Nginx可以将经常访问的静态资源缓存到内存中,加快访问速度,减轻后端服务器的负载。

5. 安全性:Nginx具有较强的安全性,支持SSL/TLS协议和HTTP基本认证等安全机制,可以有效地保护网站的安全。

6. 可扩展性:Nginx支持模块化的架构,可以通过添加模块来扩展其功能和性能。

Nginx的应用场景包括:

1. Web服务器:Nginx可以作为Web服务器,提供静态文件服务和动态内容的处理。

2. 反向代理服务器:Nginx可以作为反向代理服务器,将客户端的请求转发到后端的应用服务器,实现负载均衡和高可用性。

3. 负载均衡器:Nginx可以作为负载均衡器,将客户端的请求分发到多个后端服务器,平衡负载,提高系统的可用性和性能。

4. 缓存服务器:Nginx可以将经常访问的静态资源缓存到内存中,加快访问速度,减轻后端服务器的负载。

总之,Nginx是一款高性能、高可用、安全可靠的Web服务器和反向代理服务器,广泛应用于各种Web应用场景,是现代Web应用架构中不可或缺的一部分。

在nginx文件中找到nginx.conf 文件,将文件种的 location 进行修改,将端口代理访问

#access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://localhost:8081;
        }

#error_page  404              /404.html;

 可以在nginx的官网进行下载,解压使用即可 : Nginx官网icon-default.png?t=N7T8https://nginx.org/en/download.html

修改后想使用,双击其中的启动文件即可,如图 :

 

nginx.conf全部代码


#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;
    #    }
    #}

}

之后进行访问,如图 :
 

第二种

在前端项目的路径中,找到index.js文件,将端口改为开放式的端口,在前端路径下的跟目录中的 config 文件中.

打开 index. js 文件,找到 location  配置端口的位置,修改为 : 0.0.0.0

如图 :

之后重新启动前端项目在主机中访问 : 

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

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

相关文章

Proteus仿真--闪烁的LED灯

本文介绍一种基于51单片机实现的LED灯闪烁仿真(完整仿真源文件及代码见文末链接) 本文主要介绍51单片机的LED闪烁仿真设计,仿真文件截图如下: 仿真视频如下: Proteus仿真--闪烁的LED灯 附完整Proteus仿真资料代码资…

NlogPrismWPF

文章目录 Nlog&Prism&WPF日志模块实现原理添加配置注入服务应用测试其他模块怎么调用? Nlog&Prism&WPF 日志模块 介绍了为WPF框架Prism注册Nlog日志服务的方法 实现原理 无论是在WPF或者ASP.NET Core当中, 都可以使用ServiceCollection来做到着…

【软考】10.1 算法特性/时间复杂度/递归/分治/动态规划

《算法》 《时间复杂度》 n 的最高次项 渐进符号 算法复杂度 线性级 O(n):顺序查找对数级 O(logn):对半查找、快速查找、归并算法 《递归》 时间复杂度 《分治法》 《动态规划法》 适用于求全局最优解构建…

MySQL总结 (思维导图,常用)

一、常见的增删改查 二、约束(五种) 三、聚合查询 1、聚合函数 2、group by 和 having 3、联合查询 案例表: drop table if exists classes; create table classes (id int primary key auto_increment,name varchar(20) ); insert into …

CAD2024最新中文版安装教程分享

wx供重浩:创享日记 对话框发送:cad24 获取 AutoCAD是目前计算机辅助设计领域最流行的CAD软件,此软件功能强大、使用方便,在国内外广泛应用于机械、建筑、家居、纺织等诸多行业。CAD制图软件具有良好的用户界面,通过交互…

开发直播商城APP:技术要点和最佳实践

在当今数字时代,直播商城APP正变得越来越受欢迎,成为了吸引消费者和促进销售的强大工具。这篇文章将探讨开发直播商城APP的技术要点和最佳实践,为开发者提供有价值的指导。 第一部分:项目准备 1.1定义项目目标 在开始开发直播商…

中国黑客群体的收入,与国外的黑客调查问卷相比!竟然还有女黑客!

从圈外认知来说,黑客一直被认为是高收入群体,黑客有白帽和黑帽处于黑白两道的黑客会的技术都有些相似,但是却是对立的,白帽做网络安全,修补漏洞。黑帽各种破坏,挖数据,攻击漏洞。 如果你对网络…

网络编程 - IP协议

目录 一,IP协议格式 1.1 拆包组包 1.2 8位生存空间 二,地址管理 2.1 动态分配 IP 2.2 NAT 机制(网络地址转换) 2.3 IPv6 2.4 网段划分 三,路由选择 一,IP协议格式 4位版本:IPv44位首部长…

数据结构和算法(15):排序

快速排序 分治 快速排序与归并排序的分治之间的不同: 归并排序的计算量主要消耗于有序子向量的归并操作,而子向量的划分却几乎不费时间; 快速排序恰好相反,它可以在O(1)时间内,由子问题的解直接得到原问题的解&#…

rust 创建多线程web server

创建一个 http server,处理 http 请求。 创建一个单线程的 web 服务 web server 中主要的两个协议是 http 和 tcp。tcp 是底层协议,http 是构建在 tcp 之上的。 通过std::net库创建一个 tcp 连接的监听对象,监听地址为127.0.0.1:8080. us…

轻松合并多个TXT文本,实现一键文件整理!

亲爱的读者们,您是否曾经需要将多个TXT文本文件合并成一个文件,却苦于无从下手?现在,我们向您介绍一个全新的TXT文本合并工具,让您轻松实现一键文件整理! 首先,在首助编辑高手的主页面板块栏里…

数据库分库分表的原则

目录 1、数据库分库分表是什么 2、为什么要对数据库分库分表 3、何时选择分库分表 4、⭐分库分表遵循的原则 5、分库分表的方式 6、数据存放在表和库中的规则(算法) 7、分库分表的架构模式 8、分库分表的问题 小结 1、数据库分库分表是什么 数…

嵌入式学习笔记(64)指针带来的一些符号的理解

我们写的代码是给编译器看的,代码要想达到你想象的结果,就必需要编译器对你的代码的理解和你自己对代码的理解一样。编译器理解代码就是理解的符号,所以我们要正确理解C语言中的符号,才能像编译器一样思考程序、理解代码。 3.2.1…

如何入门学习黑客技术?如何选择编程语言?如何选择适合黑客的操作系统?

‘ 一 ’ 了解黑客技术的基础知识 学习黑客技术需要对网络安全和计算机系统有一定的了解。可以通过参加安全培训班、阅读专业书籍和学术论文、浏览网络安全博客和论坛等方式获取基础知识。涉及的内容包括网络协议、操作系统原理、计算机网络和编程等。 如果你对网络安全入门…

C语言 每日一题 PTA 10.28 day6

1.求奇数分之一序列前N项和 本题要求编写程序,计算序列 1 1 / 3 1 / 5 ... 的前N项之和。 输入格式 : 输入在一行中给出一个正整数N。 输出格式 : 在一行中按照“sum S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围…

基于 Python 的豆瓣电影分析、可视化系统,附源码

文章目录 1 简介2 技术栈具体实现1.设计豆瓣电影自动化爬虫程序,自动获取电影数据2.对爬取到的数据进行清洗和预处理,包括多维度数据字段清洗和扩充3.将清洗好的数据存储到MySQL数据库中 4 具体效果图5 推荐阅读 1 简介 基于Python flask 的豆瓣电影分析…

搭建产品使用说明书,方法很简单,只要这个工具

产品使用说明书,它应该既包含产品外观及内容的客观介绍,又包括对业务操作流程的详细讲解。例如:公司介绍、产品背景、使用场景、产品功能、特色、亮点、内容逻辑 ...... 使用工具搭建 当下业内很多人士都会通过类似于HelpLook这样的工具来搭…

Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】

一、创建 VUE 项目 npm create vuelatest二、安装使用 ant-design-vue 安装脚手架工具 $ npm install -g vue/cli # OR $ yarn global add vue/cli使用组件 # 安装 $ npm i --save ant-design-vue4.x全局完整注册 import { createApp } from vue; import Antd from ant-de…

CANOE 仿真+测试

仿真测试 CANoe的自动化测试系统简介Canoe TFS常用函数测试判别函数测试架构函数测试报告函数检测函数 创建自动化测试工程其他常用函数 CANoe的自动化测试系统简介 基于CANoe的自动化测试系统架构,根据ECU的测试环境和测试规范,搭建基于CANoe的测试系统…

深入了解 Elasticsearch 8.1 中的 Script 使用

一、什么是 Elasticsearch Script? Elasticsearch 中的 Script 是一种灵活的方式,允许用户在查询、聚合和更新文档时执行自定义的脚本。这些脚本可以用来动态计算字段值、修改查询行为、执行复杂的条件逻辑等等。 二、支持的脚本语言有哪些 支持多种脚本…