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

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

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

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

安装虚拟机

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

sudo apt-get install openssh-server

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

配置网络

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

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

编辑-虚拟网络编辑器

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

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

virtualBOX

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

配置host

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

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

配置xshell

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

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

输入主机的ip地址:

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

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

然后就可以连接上了

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

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

服务器后台运行

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

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

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

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

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

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

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

配置环境

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

sublime sftp连接到服务器

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

安装也很简单:

ctrl + shift + p

install

sftp

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

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

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

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

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

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

var http = require('http')

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

console.log('listen 8011');

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

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

最后

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

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