最近在学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好很多,把它作为真实的实验环境是比较合适的。