使用 Vagrant 搭建 Node.js 环境

我记得我在知乎 Q3 的个人 OKR 中定下了一个小目标,就是学习 Node.js,可是现在 Q4 都过去一半了,Node 的毛也没学。
为了圆之前吹过的牛逼,同时也为了之后我将与 classTC 同学一起做的项目,我决定好好学习一下。先从环境搭建做起。
其实 Node 的环境是很好搭建的,直接在官网在上下载最新 Binary Package 安装就可以了,可是为什么还要用 Vagrant 呢?
因为我曾经在一期 TeaHour.fm 的节目中听到过,要养成把写代码的环境和生产的环境保持一致的好习惯。而 Vagrant 就可以做到这一点,不知道的同学可以去官网了解一下。
  • 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 的学习了
如果你只是为了学习 Node.js 大可不必像我这么折腾,直接下载 Binary 安装就可以了

© Xinyu 2014 - 2024