nodejs在linux安装、环境变量配置

环境,ubuntu server 14.04 LTS

1. 下载源码包

wget https://nodejs.org/dist/v4.1.0/node-v4.1.0.tar.gz

2. 解压

tar vxf node-v4.1.0.tar.gz

cd node-v4.1.0

3. 编译执行

1 编译前提

1.在ubuntu上

  • 要确保安装了C++ 编译器 apt-get install gcc
  • 确保按照了make工具 apt-get install make
  • 确保安装了g++ apt-get install build-essential 或者 #apt-get install g++

2.在centos
必须安装gcc和make

1
2
3
4
5
6
7
8
9
yum -y install gcc
yum -y install gcc-c++
yum install make
-- 或者
yum groupinstall "Development Tools"
-- 或者
yum install gcc gcc-c++ kernel-devel

经过在centos上试验,编译nodejs需要gcc-c++ 4.8 以上, centos上升级gcc教程

nodejs4.1 依赖libstdc++.so.6.0.20,默认的libstdc++.so.6版本低,执行node命令时会报错“/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.13’ not found”

将gcc安装目录(/usr/local/lib64)下的’libstdc++.so.6.0.20’拷贝到/usr/lib64下,然后重新建立软链接即可解决

1
ln libstdc++.so.6.0.20 libstdc++.so.6

查看结果,可以看到’GLIBCXX’的支持列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

2. 编译安装

1
2
3
4
5
$./configure --prefix=/opt/node/node4.1.0
$make
$make install

4. 设置path环境变量

4.1node环境变量

  1. 修改所有用户,全局环境变量
    编辑/etc/profile
    添加这一行 export PATH=$PATH:/opt/node/node4.1.0/bin

  2. 修改用户自己的环境变量 ,编辑 ~/.profile, 添加这一行 export PATH=$PATH:/opt/node/node4.1.0/bin
    执行 source .profile,可立即生效

  • 如果node 或者npm命令找不到’sudo npm command not found’,需要建立链接才能访问到命令
    建立软链接,ln [参数] 源 目标
    1
    2
    $sudo ln -s /opt/node/node4.1.0/bin/node /usr/bin/node
    $sudo ln -s /opt/node/node4.1.0/bin/npm /usr/bin/npm

4.2 模块的环境变量

1
$npm config get prefix

可以得到模块可执行命令的的路径,向上面一样,追加到环境PATH中

4.3 设置全局模块的环境变量

这个路径在 node安装目录的 lib目录下
比如我的/opt/node/node4.1.0/lib/node_modules

设置环境变量

1
export NODE_PATH="/opt/node/node4.1.0/lib/node_modules" #指定 NODE_PATH 变量

  1. 输入node -v 可以看到版本号,说明安装成功

5. 测试

1. 启一个web服务

新建一个hello.js,输入下面的代码

1
2
3
4
5
6
7
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');}).listen(1337, "0.0.0.0");
console.log('Server running at http://0.0.0.0:1337/');

然后启动脚本

1
2
$node hello-world.js
Server running at http://0.0.0.0:1337

打开一个浏览器,输入机器的ip:1337即可看到‘hello world’

6. 安装第三方模块

1
$npm install gulp -g

-g 表示安装到全局模块路径下

gulp模块安装完可以输入gulp -v来查看安装的版本,如下,说明已经安装完成

1
2
$ gulp -v
[14:16:36] CLI version 3.9.0

常见问题

collect2: fatal error: cannot find ‘ld’

./configure --without-snapshot 具体见https://github.com/nodejs/node/issues/4212


参考文档

https://ask.fedoraproject.org/en/question/23300/npm-command-as-root-user-not-found/
https://nodejs.org/en/about/
http://stackoverflow.com/questions/4976658/on-ec2-sudo-node-command-not-found-but-node-without-sudo-is-ok
http://segmentfault.com/a/1190000002478924
http://www.oschina.net/code/snippet_54100_10351