Linux虚拟机部署与发布项目(Windows版本)

news2024/9/25 23:20:58

目录

前言

一、虚拟机部署项目的流程

二、单机项目

1. 本机测试

2.虚拟机部署项目

三、前后端分离项目


前言

在软件开发过程中,部署和发布项目是非常重要的一环。使用虚拟机技术可以方便、灵活且可重复使用地部署和发布项目。本篇博客将介绍如何在 Windows 环境下使用虚拟机来部署和发布 Linux 项目。

一、虚拟机部署项目的流程

前四布流程可查看该博客安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境

1.准备工作

首先,需要下载和安装虚拟机软件。常见的虚拟机软件包括 VMware Workstation、Oracle VirtualBox 等。其次,需要获取所需的 Linux 操作系统镜像文件。可以从官方网站或其他可信来源下载。

2.创建虚拟机

使用虚拟机软件创建一个新的虚拟机实例。在创建虚拟机时,需要配置虚拟机的硬件设置,如内存、处理器等。接下来,需要安装 Linux 操作系统并进行基本配置。

3.配置网络

设置虚拟机的网络连接方式,如桥接模式或 NAT 模式。桥接模式可以让虚拟机直接连接到物理网络,而 NAT 模式则可以让虚拟机通过主机来访问外部网络。配置网络参数,如 IP 地址、子网掩码等。

4.安装 Linux 软件

下载和安装所需的 Linux 软件,如 Apache、MySQL、jdk等。可以使用包管理器来安装软件。

5.导入和配置项目

将 Linux 项目导入到虚拟机中。需要配置项目的依赖项、数据库连接等。可以使用编辑器或命令行工具来进行配置。

6.运行和测试项目

在虚拟机中启动应用服务器,如 Apache、Tomcat 等。部署项目并启动应用。使用浏览器访问项目,并进行功能测试。

7.备份和复制虚拟机

学习如何备份和复制虚拟机以供后续使用或共享给他人。可以使用虚拟机软件提供的快照功能来进行备份和复制。

二、单机项目

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

1. 本机测试

在本机中将SQL文件导入测试是否有问题

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

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

 运行好之后,在浏览器输入地址进行访问,如果运行成功则代表项目本身是没有问题

2.虚拟机部署项目

将项目共享到虚拟机

解压并将war包放入tomcat下的webapps中

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

运行tomcat并查看该项目的数据库配置 

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

三、前后端分离项目

这里本机测试就不带大家一步步测试了,都差不多,也非常简单,接下来我们将继续介绍如何通过虚拟机去部署前后端分离项目

解压并将war包放入tomcat

运行tomcat并查看该项目的数据库配置

导入我们的数据库脚本 

配置node.js环境

解压
将文件解压到指定位置(例如:C:\software\NodeJS),并在解压后的目录下建立node_global和node_cache这两个目录

      注:新建目录说明

           node_global:npm全局安装位置

           node_cache:npm缓存路径

配置环境变量
新增NODE_HOME

修改PATH并在最后添加:;%NODE_HOME%;%NODE_HOME%\node_global;

测试安装是否成功:打开cmd窗口,输出如下命令:

           node -v  输出NodeJs版本号

           npm -v  输出npm的版本号

配置npm全局模块路径和cache默认安装位置
      打开cmd,分开执行如下命令:

      npm config set cache "D:\software\NodeJS\node-v10.15.3-win-x64\node-v10.15.3-win-x64\node_cache"

      npm config set prefix "D:\software\NodeJS\node-v10.15.3-win-x64\node-v10.15.3-win-x64\node_global"

 注1:将步骤一创建的node_global(npm全局安装位置)和node_cache(npm缓存路径)与npm联系起来

注2:如果执行命令卡死,可以删除C:\Users\用户名\.npmrc 后重新执行。(用户名:为当前电脑的用户名)

 注3:"D:\software\NodeJS\node-v10.15.3-win-x64\node-v10.15.3-win-x64\node_global",双引号不能少

修改npm镜像提高下载速度
可以使用 cnpm 或 直接设置 --registry ,推荐设置 --registry

 --registry

          设置淘宝源

          npm config set registry https://registry.npm.taobao.org/

          查看源,可以看到设置过的所有的源

          npm config get registry

          注1:其实此步骤的内容就是将以下代码添加到C:\Users\用户名\.npmrc文件中

               registry=https://registry.npm.taobao.org

cnpm

          npm install -g cnpm --registry=https://registry.npm.taobao.org

          注1:cnpm安装完成后,以后就可以用cnpm命令代替npm命令, 此时npm还是会用官方镜像,cnpm会用国内镜像

          注2:如果要恢复成原来的设置,执行如下:

               npm config set registry https://registry.npmjs.org/

验证安装结果
1 版本验证

          node -v

          npm -v

2 查看淘宝镜像设置情况

          npm get registry

 3 查看npm全局路径设置情况

          此步骤随便全局安装一个模块就可以测评

          npm install webpack -g

         以上命令执行完毕后,会生成如下文件

          %node_home%\node_global\node_modules\webpack

  注意:下载过程中出现warn不用管,出现Error,删掉下载的破碎文件重新下载

如何运行下载的Node.js项目
将下载的项目解压到指定目录,本例是解压到:C:\Users\86155\Desktop\pro\nmgwap-vueproject-master\vueproject,

直接输入cmd进入

再输入npm i 

我们的模块就在下载了,注意这里必须要联网 

命令执行完后,你会发现,项目的根目录下多了一个node_modules文件夹,

那里面就是从npm远程库里下载的模块,然后“安装”到你的项目中,

此步骤,可理解成修改maven的pom文件添加依赖,然后maven再从中央仓库下载依赖

 那pom文件在哪里呢?其实就是项目中的package.json

执行命令npm run dev就可以启动项目了

运行项目

前后端分离的项目如果直接这么访问就会访问不到,只有虚拟机自己才可访问。

以下我提供两种解决方案:

1.解决spa项目宿主机访问

使用nginx反代理工具

进入nginx下的conf文件夹下的nginx.conf文件进行配置代理url

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

接下来我们就可以访问啦

解决spa项目宿主机访问

在spa项目中找到config文件下的index.js将localhost改为0.0.0.0

http://192.168.137.128:8081/也可以进行访问 

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

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

相关文章

代码随想录打卡第五十三天|309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 题目: 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖…

2023年中国道路扫雪车分类、市场规模及发展前景分析[图]

道路扫雪车是一种专门用于清除道路上积雪和冰雪的机动车辆,通常配备有雪铲、扫雪刷、除冰剂喷洒系统等装置,用于在雪季或寒冷气候条件下,对道路进行清扫、除雪、除冰等作业,以确保道路的通行安全。 道路扫雪车行业分类 资料来源&…

浅谈分布式系统

文章目录 分布式系统应用数据分离架构应用服务集群架构读写分离 / 主从分离架构引入缓存--冷热分离架构数据库分库分表存储集群微服务架构小结 分布式系统 只有一台服务器负责所有的工作称为单机架构,但是一台主机的硬件资源是有上限的,当同一时刻主机收…

借助 Pyroscope 对 Amazon EKS 容器服务进行 Continuous Profiling 诊断应用性能

Continuous Profiling 的现状 在可观测领域,Trace、Log、Metrics 作为“三大支柱”,帮助工程师更方便的洞察应用的内部问题。然而,对于开发人员而言,经常还需要深入应用程序,找出造成瓶颈的根本原因。在可观测的“三大…

Annotorious入门教程:图片注释工具

本文简介 最近有工友问我前端怎么给图片做标注。使用 Fabric.js 或者 Konva.js 等库确实可以实现,但我又好奇有没有专门做图片标注的工具呢? 在网上搜了一下发现 Annotorious 可以实现这个功能。Annotorious 提供了图片注释和标注功能,而且…

UVa10976 Fractions Again?!(分数拆分)

1、题目 2、题意 输入正整数 k k k,找到所有正整数 x ≥ y x \ge y x≥y,使得 1 k 1 x 1 y \frac{1}{k} \frac{1}{x} \frac{1}{y} k1​x1​y1​。 3、分析 既然要求找出所有的 x , y x,y x,y,枚举对象自然是 x , y x,y x,y了。可…

​Vue2【双向数据绑定/响应式原理】

目录 初始化 initProps():父组件传的 props 列表,proxy() 把属性代理到当前实例上 vm._props.xx 变成 vm.xx initData():判断data和props、methods是否重名,proxy() 把属性代理到当前实例上 this.xx observe():给…

c++实现dijskstra算法

图 我一开始写成了最小生成树的代码&#xff0c;最小生成树一直在选最小的那条边&#xff0c;对每个节点来说&#xff0c;它到原点的距离不一定是最近的。 代码 #include<iostream> using namespace std; #include<list> #include<vector>class Node { pub…

RocketMQ事务消息 超时重发还是原来的消息吗?

以下面的一个demo例子来分析一下&#xff0c;探索RocketMQ事务消息原理。 public static final String PRODUCER_GROUP "tran-test";public static final String DEFAULT_NAMESRVADDR "127.0.0.1:9876";public static final String TOPIC "Test&qu…

如何理解Quadratic Weighted Kappa?

Motivation 假定我们现在有 N N N个作文样例&#xff0c;以及它们对应的人类评分和GPT评分。评分一共有 C C C个互斥类别&#xff0c;分别是{0,1,2,3}。现在我们要衡量人类评分和GPT评分的一致性。 一个很直观的想法是&#xff0c;画出混淆矩阵&#xff0c;然后将对角线上的值…

Linux Centos7安装后,无法查询到IP地址,无ens0,只有lo和ens33的解决方案

文章目录 前言1 查看network-scripts目录2 创建并配置 ifcfg-ens33 文件3 禁用NetworkManager4 重新启动网络服务总结 前言 在VMware中&#xff0c;安装Linux centos7操作系统后&#xff0c;想查询本机的IP地址&#xff0c;执行ifconfig命令 ifconfig结果如下&#xff1a; 结…

吴恩达《机器学习》1-5:模型描述

一、单变量线性回归 单变量线性回归是监督学习中的一种算法&#xff0c;通常用于解决回归问题。在单变量线性回归中&#xff0c;我们有一个训练数据集&#xff0c;其中包括一组输入特征&#xff08;通常表示为&#x1d465;&#xff09;和相应的输出目标&#xff08;通常表示为…

UVa140 Bandwidth(带宽)

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

Ansible上通过roles简化playbook演示介绍

目录 一.roles介绍 1.作用 2.role的目录结构 3.role和tasks的执行优先级顺序 二.自定义一个httpd的角色 1.完整目录结构展示 2.主要的各个目录配置 &#xff08;1&#xff09;vars目录和templates目录 &#xff08;2&#xff09;tasks目录和handlers目录 &#xff08…

操作系统中套接字和设备独立性软件的关系

网络编程就是编写程序让两台联网的计算机相互交换数据。在我们不需要考虑物理连接的情况下&#xff0c;我们只需要考虑如何编写传输软件。操作系统提供了名为“套接字”&#xff0c;套接字是网络传输传输用的软件设备。 这是对软件设备的解释&#xff1a; 在操作系统中&#…

Unity ScrollView最底展示

Unity ScrollView最底展示 问题方案逻辑 问题 比如在做聊天界面的时候我们肯定会使用到ScrollView来进行展示我们的聊天内容&#xff0c;那么这个时候来新消息的时候就需要最底展示&#xff0c;我认为这里有两种方案&#xff1b; 一种是通过算法每一条预制体的高度*一共多少…

轮转数组(Java)

大家好我是苏麟 , 这篇文章是凑数的 ... 轮转数组 描述 : 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 题目 : 牛客 NC110 旋转数组: 这里牛客给出了数组长度我们直接用就可以了 . LeetCode 189.轮转数组 : 189. 轮…

Python---break关键字对for...else结构的影响

for循环中添加else结构 循环可以和else配合使用&#xff0c; else下方缩进的代码指的是当循环正常结束之后要执行的代码。 强调&#xff1a; 循环 正常结束&#xff0c;else之后要执行的代码。 非正常结束&#xff0c;其else中的代码是不会执行的。&#xff08;如遇到br…

类和对象(1):类,对象,this指针

面向过程和面向对象初步认识&#xff1a; C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出问题求解的步骤&#xff0c;用函数调用逐步解决。C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完成。…

【.NET Core】创建一个在后台运行的控制台程序(ConsoleApp)

文章目录 1. 添加Nuget包2. 修改Program.cs3. 添加TestService 借助.NET的通用主机&#xff08;IHostBuilder&#xff09;可以轻易创建一个可以执行后台任务的程序 1. 添加Nuget包 Microsoft.Extensions.Hosting 2. 修改Program.cs 通过Host获取IHostService&#xff0c;然…