使用 Vagrant 搭建 Node.js 环境
我记得我在知乎 Q3 的个人 OKR 中定下了一个小目标,就是学习 Node.js,可是现在 Q4 都过去一半了,Node 的毛也没学。
为了圆之前吹过的牛逼,同时也为了之后我将与 classTC 同学一起做的项目,我决定好好学习一下。先从环境搭建做起。
其实 Node 的环境是很好搭建的,直接在官网在上下载最新 Binary Package 安装就可以了,可是为什么还要用 Vagrant 呢?
因为我曾经在一期 TeaHour.fm 的节目中听到过,要养成把写代码的环境和生产的环境保持一致的好习惯。而 Vagrant 就可以做到这一点,不知道的同学可以去官网了解一下。
- 首先安装 vagrant + virtual box
- mac 上创建一个目录并进入,比如我的目录是
vagrant
,
- 执行
vagrant init
- 安装 Ubuntu 14.04 box(当然你也可以选择其它 box,你生产环境用什么,这里就用什么 box)
如果报错,执行
sudo rm /opt/vagrant/embedded/bin/curl
后再执行一遍上一条命令
vagrant box add ubuntu/trusty64
(此步骤执行时间取决于网速,做好心理准备)vagrant up
根据当前 Vagrantfile 启动 vagrant
vagrant ssh
ssh 进入当前的 vagrant 环境,进行一些 setup 的工作 在 vagrant 中执行mkdir helloworld
创建一个和 mac 共享的目录logout
退出 ssh
- 在 mac 上的 vagrant 目录创建一个目录
mkdir helloworld
用于与 vagrant 共享
- 编辑 Vagrantfile
熟悉 CocoaPods 的同学看着下面的文件应该很亲切
# -*- mode: ruby -*-
# vi: set ft=ruby :
# 这里的 host 指的是我们的电脑 -> 也就是 mac
# guest 指的是 Ubuntu
Vagrant.configure("2") do |config|
# 指定我们使用的 box
config.vm.box = "ubuntu/trusty64"
# 禁用掉自动更新,当然啦,这行是 optional 的
config.vm.box_check_update = false
# 假定我们的 node 程序跑在 8080 端口,我们把这个端口转发出来给 mac,
# 在 mac 上也就能通过 http://localhost:8080 访问跑在 Ubuntu 上的 node 应用了
config.vm.network "forwarded_port", guest: 8080, host: 8080
# 映射共享文件夹
config.vm.synced_folder "path-to-vagrant/vagrant/helloworld", "/home/vagrant/helloworld"
# 这下面的命令可以通过 `vagrant provision` 来执行,进行一些 Ubuntu 环境的初始化工作
# 不需要每次都执行,有变更了执行就好
config.vm.provision "shell", inline: <<-SHELL
apt-get update
sudo apt-get install nodejs -y
sudo apt-get install npm -y
SHELL
end
vagrant reload
重启 vagrant
vagrant provision
安装我们在 Vagrantfile 中写好的 provision
环境安装到此结束
测试我们安装好的环境:
vagrant ssh
ssh 进 vagrant
- 在 mac 上的 /path-to-vagrant/vagrant 新建一个
main.js
的文件,写入以下内容:
这就是我们建立目录映射的原因,可以通过 mac 上的各种编辑器,编辑在 vagrant 中的东西
var http = require("http");
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8080);
console.log('Sever running at http://127.0.0.1:8080');
vagrant ssh
进入 vagrant,cd helloworld
执行node main.js
- 在 mac 上用浏览器查看
localhost:8080
,如果有hello world
就说明成功啦~ 可以顺利开始 node.js 的学习了