【图解】用虚拟机做服务器

2023-11-06

最近在学nodejs,不知道有没有人跟我有一样的困惑,每次学新东西配置实验环境都是个麻烦事(其实也没那么麻烦),主要是当自己的电脑装了一堆环境,一堆IDE后,总会变得臃肿不堪,而且经常遇到莫名其妙的问题,解决麻烦,还容易造成系统的不稳定。而且每换一台电脑,所有的东西需要重新配置。

所以我一直在想有一台专属的实验服务器就好了(可是对于学生来说还是贵啊),我可以在上面装我的专属实验环境,并且不用担心污染我的本地电脑,而且重装系统,或者在不同电脑上也能快速的恢复实验环境!

所以我就想能不能用虚拟机做一台专属的实验服务器,后来发现是可行的,并且装了server版的虚拟机基本不怎么吃资源。

这里介绍一下如何用虚拟机构建一台服务器,我是用的vmware,用virtualbox基本也差不多,除了端口映射那里不太一样

安装虚拟机

首先安装一个虚拟机,这里网上大量教材就不提供了,这里我是用的ubuntu-server,注意安装的时候,最后选择安装包的时候,把openssh带上。或者安装完后通过命令安装

sudo apt-get install openssh-server

安装完通过查看,如果有sshd说明安装成功

your text

配置网络

这里我采用的NAT模式,该模式的好处是不用管外界ip地址的变化(比如说办公环境经常变换,ip地址也经常变换),内部ip部会改变,这样可以免去频繁修改host文件的烦恼。

我这里使用的vmware,把22号端口暴露出去(可以在公网中访问)

编辑-虚拟网络编辑器

your text

点击【NAT设置】- 【添加】,这里输入端口号22,然后虚拟机的ip地址(进入虚拟机通过ipconfig获得),我这里是192.168.91.133

your text

your text

填完之后确定,我们虚拟机就配置完了

virtualBOX

对于virtualbox来说其实更简单,直接点击端口转发就行了

your text

your text

配置host

这里,为了访问虚拟机方便,或者避免虚拟机ip地址变化导致程序需要做大量修改配置文件。

我们可以直接在host中做一个映射。一般在C:\Windows\System32\drivers\etc目录下,用记事本,gvim等可以打开。增加一行是虚拟机的ip地址。

your text

配置xshell

xshell是windows端功能强大的ssh终端软件,可以免费使用,下载地址:
http://www.netsarang.com/download/main.html

当然你也可以使用(Putty、SecureCRT)根据自己的需要

输入主机的ip地址:

your text

然后可以修改一下外观,改变一下字体什么的,然后按确定,再在弹出的对话框点【连接】

your text

会让你输入用户名和密码, 你可以选择记住密码

your text

your text

然后就可以连接上了

your text

我们测试一下通过输入本地主机的ip地址:

your text

your text

发现也是能连接上的,说明端口被暴露出来了

服务器后台运行

是不是每次都要打开电脑,然后留一个VM程序在任务栏惹人厌呢?当然不是,我们可以让它后台运行。接下来,我们可以把我们的虚拟机(服务器)后台运行了

your text

编辑——首选项,选中关闭后保持虚拟机运行

your text

光这样还不够,还要在服务中把VMware Authorization Service打开,就可以把虚拟机后台运行了。

VMware Authorization Service打开,就可以把虚拟机后台运行了。

your text

在vmware把虚拟机打开时候,关闭就行了,然后它就跑后台运行了,我们就可以随时通过远程工具比如(xshell)访问了

your text

可以发现服务器开了在后台基本不怎么耗费资源,可能也是server版本的原因,这样就可以放心的在后台开启服务器了。

your text

有人问为什么不直接在虚拟机中运行指令,而非要弄一个xshell远程登录,这个嘛,主要是~装逼~,当然不是拉,一来,我xshell软件可以显示风格,二来和真实工作情况相似,三来xshell提供了很多功能,加上配合xftp传输文件,非常方便。

配置环境

我这里主要使用node,所以安装了一些node开发工具(node npm mongodb redis……)

sublime sftp连接到服务器

在sublime中,通过sftp插件可以快速的把工程同步到服务器上,简直不要太方便

安装也很简单:

ctrl + shift + p

install

sftp

使用的时候,对需要同步的目录或文件,点击右键【SFTP】,配置一下,主要是下面几个地方要配置一下,把upload_on_save

打开可以在每次保存的时候,自动同步(根据需要开关),然后配置一下host,用户名,密码,端口号,还有同步到的目录(事先创建)

your text

然后我们保存,点击右键——【SFTP】——Upload File

your text

然后我们通过xshell打开服务器,可以看到正常同步过来了

your text

然后,只要我们代码修改保存,这里就会自动同步更新

我们写了一小程序,在服务器的8011端口跑

var http = require('http')

http.createServer(function  (req,res) {
    // body... 
    res.end('hello');
}).listen(8011);

console.log('listen 8011');

我们在服务器端运行一下:

your text

然后我们在本地跑一下:输入http://myserver:8011(还记得我们之前配置了hosts文件吗),可以看到程序正常运行了。

your text

最后

然后,你就可以在服务器上做任何你想做的事情了,而且配置好的环境,你可以压缩包保存一份,然后上传到百度云上(我装完环境的才2g,压缩完700m),以后不管在什么地方,只要装上虚拟机,所有环境就有了,不要重新配置,方便吧!

你还可以多配几个不同的实验环境,而不用担心污染你的本地电脑。而且linux的bash在实际工作中效率要比windows好很多,把它作为真实的实验环境是比较合适的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【图解】用虚拟机做服务器 的相关文章

  • 使用 React.js + Express.js 发送电子邮件

    我在 ES6 中使用 React js 构建了一个 Web 应用程序 我目前想要创建一个基本的 联系我们 页面并想要发送电子邮件 我是 React 新手 刚刚发现我实际上无法使用 React 本身发送电子邮件 我正在遵循教程nodemail
  • Node JS - 如何检测用户语言

    我正在尝试在纯 Node js 中检查用户语言 而不使用 npm 的任何扩展 我使用了进程和全局命令 有很多规范但我找不到系统语言 这是获取默认区域设置的独立于操作系统 节点 浏览器的方法 let locale Intl DateTimeF
  • Node.js 重写 toString

    我试图覆盖我的对象的默认 toString 方法 这是代码和问题 function test this code 0 later on I will set these this name test prototype toString f
  • NodeJS hmac 摘要问题与重音

    我正在对以下代码与 Ruby PHP 和 NodeJS 进行并排比较 使用 NodeJS 得到错误的响应crypto module PHP hash hmac sha256 text Ruby OpenSSL HMAC hexdigest
  • Nodejs Express中间件函数返回值

    我正在使用 NodeJS 和 Express 我有以下路线 中间件功能是Mobile 如果我不使用 return next 在 isMobile 函数中 应用程序会卡住 因为 NodeJS 不会移至下一个函数 但我需要 isMobile 函
  • 使用 Sequelize 实现单表继承

    有没有办法使用sequelize来创建单表继承 我希望有一个用于购买和 PartialPurchase 模型的 STI 其中我将有一个类型字段 该字段为 Purchase 或 PartialPurchase 以及类 Purchasing 和
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • Plesk Windows 部署 Node.js

    我创建了一个以 Node js 作为后端的 Angular 项目 这是服务器文件结构 Home directory httpdocs node hm dist browser folder server folder server js p
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 在node.js中生成密码重置令牌

    如何在 node js 中生成可在 url 中使用的密码重置令牌 我只需要生成令牌的方法 user reset password token user reset password expire expire date 编辑 这是解决方案
  • 如何在 Node.js 中进行多个 API 调用并在每次调用之间有延迟

    我的目标是对数据列表进行多个 api 调用 假设我有以下代码 const axios require axios const axiosRequests const strings a b c for let str of strings
  • 在 mac-os-x Yosemite 上调用“npm”时,Jenkins 构建步骤失败

    在开始之前 我想说我已经检查过这些答案 Jenkins 构建步骤在 npm install 上失败 https stackoverflow com questions 11564508 jenkins build step fails on
  • 如何强制 pm2 在特定时间后重新启动?

    我在用PM2让我的 Node js 应用程序保持运行 有什么办法可以拥有PM2每 1 小时重新启动一次我的应用程序 将下面的代码放入pm2 js并开始它pm2 start pm2 js var pm2 require pm2 pm2 con
  • 为什么我们不能在 Express.js 中执行多个response.send?

    3年前我可以做多个res send在express js中 甚至写一个setTimeout显示实时输出 response send response send
  • Node + Express 会话过期?

    我有一个 Express 应用程序 并且有一个登录表单 我需要持续 1 个月的会话 我是否将 maxAge 设置为一个月 以毫秒为单位 我让两台计算机保持打开状态并登录了 24 小时 当我回来时 两台计算机都已注销 我该如何解决这个问题 实
  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客

随机推荐

  • linux定时备份postgresql与恢复数据

    备份命令 参考链接 https www jb51 net article 205924 htm 为了避免操作数据库的风险 因此计划每天对postgresql 数据库 进行定时备份 1 服务器地址 备份服务器地址 10 10 10 101 虚
  • FlinkCDC第四部分-同步mysql到mysql,ctrl就完事~(flink版本1.17.1)

    本文介绍了不同源单表 单表同步 不同源多表 单表同步 注 此版本支持火焰图 Flink版本 1 17 1 环境 Linux CentOS 7 0 jdk1 8 基础文件 flink 1 17 1 bin scala 2 12 tgz fli
  • 艾兰·图灵

    艾伦 麦席森 图灵 1912年生于英国伦敦 1954年死于英国的曼彻斯特 他是计算机逻辑的奠基者 许多人工智能的重要方法也源自于这位伟大的科学家 被誉为计算机科学之父 人工智能之父 计算机逻辑的奠基者 提出了 图灵机 和 图灵测试 等重要概
  • Apifox自动生成接口文档

    1 安装 1 1 Apifox安装 官方文档 Apifox API 文档 调试 Mock 测试一体化协作平台 接口文档工具 接口自动化测试工具 接口Mock工具 API文档工具 API Mock工具 API自动化测试工具 1 2 IDEA
  • 结构体对齐计算方式

    目录 法则一 结构体成员的偏移量必须是成员大小的整数倍 数组除外 法则二 结构体大小必须是所有成员大小的整数倍 数组 结构体除外 带数组的结构体大小计算 带结构体的结构体大小计算 带联合体的结构体大小计算 pragma pack 4 向4对
  • Django模板的使用

    模板文件夹在工程目录下 配置路径 测试 视图 路由 模板 测试 查询数据返回显示在模板中 视图 模板 测试
  • AR开发 - 入门笔记

    文章目录 C C 基础 环境编程 C C 进阶 性能优化 图像处理库 OpenCV 图形学和 OpenGL 深度学习推理库 ncnn GUI框架imgui 多视图几何与 SLAM Unity AR 教程 C C 基础 语法 C99 C 03
  • 前、后端登录验证逻辑

    一 前端先进行第一层校验 前端主要做一些格式的校验 比如用户名 密码的输入符不符合规范 是否为空 验证码输入是否正确 一般验证码的校验在前端 如果验证码都不匹配的话 则不需要调用登录接口 直接return 如果后端给的是图片地址 也可以放在
  • C++中双括号初始化问题

    在刷题时用到了一个栈 网上参考了答案无意中发现了这个双大括号初始化的方法 查阅后发现java有这种用法 说其这本质上是匿名内部类加实例化代码块 但这边个跟类有什么关系 嗯 又想到明明之前用到栈的时候并没有初始化 于是再次定义了一个未初始化的
  • 13. 集群安全

    文章目录 K8S安全机制说明 Authentication 认证 HTTPS 证书需要认证的节点 两种类型 安全性说明 证书颁发 Kubeconfig ServiceAccount Secret 与 SA 的关系 Authorization
  • 【AI面试】降低过拟合的方式方法横评探究

    对于一个 训练调参工程师 来说 在训练过程遇到过拟合现象 是常事 当然 如何降低过拟合 也是在面试过程中 经常被面试官问到的问题 没啥可问的 就只能这样问了 以下是我们会常考虑常事使用的解决方法 按照重要程度依次排列 数据增强 Data A
  • [离散数学]命题逻辑P_3:命题符号化及其应用

    离散数学 命题逻辑P 3 命题符号化及其应用 前言 1 命题联结词的总结 命题联结词 命题联结词的真值表 例子 2 命题联结词的优先级 优先级顺序 例子 3 复合命题符号化 例子 4 联结词应用 开关电路 逻辑电路 网页检索 位运算 总结
  • MYSQL:事务

    事务 理解事务 事务操作 案例 事务的特性 事务的隔离级别 事务的隔离级别 操作 在MySQL中的事务 Transaction 是由存储引擎实现的 在MySQL中 只有InnoDB存储引擎才支持事务 事务处理可以用来维护数据库的完整性 保证
  • 大中型企业网项目实战2021-10-07

    1 问答题 大中型企业网项目实战 实验作业 一 安全管理 1 依据图中拓扑 为全网设备定义主机名 关闭域名解析 并在 Console 和VTY 线路下关闭线路超时并开启输出同步 依据图中拓扑在GNS3 IOU中搭建企业网 外链图片转存失败
  • 小程序封装form表单

    小程序封装form表单 在小程序中 表单是开发中最常用的组件之一 表单可以接收用户的输入数据 并提交给服务器进行处理 为了提高表单的复用性和减少代码重复 我们可以考虑对表单进行封装 使得表单可以在不同的页面中进行复用 本文将分享如何在小程序
  • 查看Linux系统信息

    1 登录到linux服务器执行 lsb release a 命令 即可查看所有版本信息 这个命令适用于所有的linux 包括Redhat SuSE Debian等发行版 注意 centos需要安准lsb LSB是一套核心标准 它保证了LIN
  • dubbo源码实践-serialize层的例子

    目录 1 serialize层概述 2 序列化的简单例子 2 1 项目截图 2 2 三个类的源码 2 2 1 ABC是实体类 2 2 2 TestSeriarsWrite把ABC对象序列化到文件中 2 2 3 TestSeriarsRead
  • Linux内核——cli()和sti()——标志寄存器的中断标志

    cli 和sti 有点类似于汇编指令中的CLI和STL 当某个任务在执行的过程中不想被中断 则可以在任务的开始出执行cli 在任务的结束处执行sti 恢复中断的执行 为了避免竞争条件和中断对临界代码区的干扰 在Linux 0 12内核代码中
  • IDEA中使用Junit测试

    文章目录 一 创建一个Maven项目 二 在Maven项目中添加JUnit依赖 三 创建测试类 一 创建一个Maven项目 二 在Maven项目中添加JUnit依赖 在pom xml中添加JUnit依赖
  • 【图解】用虚拟机做服务器

    最近在学nodejs 不知道有没有人跟我有一样的困惑 每次学新东西配置实验环境都是个麻烦事 其实也没那么麻烦 主要是当自己的电脑装了一堆环境 一堆IDE后 总会变得臃肿不堪 而且经常遇到莫名其妙的问题 解决麻烦 还容易造成系统的不稳定 而且