标题够长,主要是因为我也不知道应该怎么形容这个主题。
本来是在学习Retrofit的,但是学着学着突然想学全套。于是想着自己家里弄一个局域网内的REST API,这样方便自己写的安卓小demo可以实现各种REST请求。
于是折腾的从安装json-server到局域网访问虚拟机的过程出现了。
本机环境:
宿主机:Window10 + 虚拟机Ubuntu14.04.5
初步的目标是想让手机浏览器可以成功访问虚拟机。
一,设置虚拟机静态ip
参考链接:
http://www.cnblogs.com/noteless/p/5251336.html
首先,设置虚拟机使用的网络是NAT模式的。
接着打开虚拟机,关闭虚拟机的防火墙,使用命令:sudo ufw disable
确保主机和虚拟机可以互ping成功。
具体流程记录没有截图,请参考以上链接进行配置。
二,Node.js安装
参考链接:
http://blog.csdn.net/w20101310/article/details/73135388
链接中推荐的是使用命令行下载node.js包,我试过,不成功,哪怕我用VPN下载,也不行。
所以我最终选择的是到官网 https://nodejs.org/download/release/ 下载最新版本 node-v8.1.2-linux-x64.tar.xz 。
然后在ubuntu虚拟机中解压:tar -xvf node-v8.1.2-linux-x64.tar.xz
【此步骤可选】然后移动到 /opt/目录下:sudo mv node-v8.1.2-linux-x64 /opt
接下来设置软链接:
sudo ln -s /opt/node-v8.1.2-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /opt/node-v8.1.2-linux-x64/bin/npm /usr/local/bin/npm
三,安装json-server
参考链接:
http://www.cnblogs.com/lewo/p/mock-json-server-install.html
在命令行中输入:sudo npm install json-server -g
在Ubuntu16.04上好像不用为json-server设置链接,但是Ubuntu14.04却不行。需要自己添加软链接:
sudo ln -s /opt/node-v8.1.2-linux-x64/bin/json-server /usr/local/bin/json-server
在任一目录新建文件夹 mockTest,在mockTest下新建db.json文件,输入测试内容:
然后在文件夹mockTest下运行: json-server db.json -p 3003
然后可以看到终端中提示 Resources , http:localhost:3003,在浏览器地址栏中输入 http:localhost:3003,可以看到
说明json-server运行正常。
然后在宿主机的浏览器上访问:http://192.168.31.139:3003/db ,(192.168.31.139:3003是虚拟机的ip)
说明可以正常从宿主机访问虚拟机的json-server。
四,从局域网访问虚拟机
参考链接:
http://blog.csdn.net/u012268339/article/details/61204801
http://www.jianshu.com/p/db488f0ae3c0
从局域网访问虚拟机,因为不能直接访问虚拟机,所以主要配置实现的是一个端口映射的功能。
首先确定相关信息
虚拟机ip:192.168.31.139, 端口:3003
宿主机ip:192.168.2.103
打开VM -> 【编辑】 -> 【虚拟网络编辑器】 -> 【更改设置】:
点击【NAT设置】-> 【添加】,在映射传入端口填写数据如下:
设置完之后,可以在宿主机浏览器中访问:http://192.168.2.103:10010/db
说明端口映射已经正常。但是从手机浏览器目前还不能访问,需要为宿主机的防火墙设置端口例外。
打开windows设置界面,搜索【防火】,进入【防火墙和网络保护】
选择【高级设置】,在【入站规则】右键新建一个入站规则。
规则类型选择TCP,选择特定端口,然后填写之前你映射的宿主机端口,我的是10010.
为这个新增的入站规则命名和填写描述,点击【完成】
现在可以试试在连接了本地wifi的手机端访问: http://192.168.2.103:10010/db
Okay,乱七八糟的配置完成,从局域网成功访问虚拟机...