怎样安装Node.js

2018年8月7日 | 分类: 【技术】

【介绍】

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用。

Node.js 的包管理器 npm,是全球最大的开源库生态系统。

参考:https://www.nodeapp.cn/

【环境】

注意:操作系统的版本会影响,Nodejs的特性在64位、32位下很可能不兼容。别用老旧系统版本,直接使用最新的64位CentOS7。

比如:在搬瓦工的CentOS6系统下报错:

-bash: /usr/local/bin/node: cannot execute binary file

【安装】

NVM(Node version manager)是Node.js的版本管理软件,使用户可以轻松在Node.js各个版本间进行切换。

git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

激活NVM:

echo ". ~/.nvm/nvm.sh" >> /etc/profile
source /etc/profile

列出Node.js的所有版本:

nvm list-remote

安装多个Node.js版本:

nvm install v6.9.5
nvm install v7.4.0

注意,不同的Node.js版本对应不同的gzip版本。

参考:https://amon.org/gzip

gzip版本符合要求,返回:

######################################################################## 100.0%
Checksums empty
Now using node v7.4.0

gzip版本不符合要求,返回:

######################################################################## 100.0%
Checksums empty

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Binary download failed, trying source.

查看已安装Node.js版本:

nvm ls

输出:

         v6.9.5
->       v7.4.0
         system
stable -> 7.4 (-> v7.4.0) (default)
unstable -> 6.9 (-> v6.9.5) (default)

切换Node.js版本:

nvm use v6.9.5

输出:

Now using node v6.9.5

NVM的更多操作请参考帮助文档:

nvm help

【部署】

参考:http://www.tfan.org/nodejs-running-on-port-80-with-apache/
参考:https://blog.csdn.net/gaoxuaiguoyi/article/details/50927661
参考:https://blog.csdn.net/ruzhuxiaogu/article/details/52663657
参考:http://stackoverflow.com/questions/12701259/how-to-make-a-node-js-application-run-permanently
参考:https://zfanw.com/blog/apache-proxy-node-js.html
参考:https://help.aliyun.com/document_detail/50775.html
参考:https://www.zhihu.com/question/19887245
参考:https://www.jianshu.com/p/ee935729f49c
参考:https://segmentfault.com/a/1190000010205995

可使用 Apache 的 Proxy mode 使 Node.js 和 Apache 共用 80 端口。

首先,在 Apache 的配置文件中,开启 mod_proxy 和 mod_proxy_http:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

在vhost文件中添加:

<VirtualHost *:80>
	ServerName amon.org
	ServerAlias www.amon.org
	ProxyRequests off
	<Proxy *>
		Order deny,allow
		Allow from all
	</Proxy>
	<Location />
		ProxyPass https://amon.org:3000/
		ProxyPassReverse https://amon.org:3000/
	</Location>
	DocumentRoot /usr/local/apache2/htdocs/amon.org
	<Directory "/usr/local/apache2/htdocs/amon.org">
		AllowOverride All
	</Directory>
	ErrorLog /usr/local/apache2/htdocs/logs/error.log
	CustomLog /usr/local/apache2/htdocs/logs/access.log combined
</VirtualHost>

写一个index.js文件

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
 
app.get('/', function(req, res){
	res.send('<h1>Welcome Realtime Server</h1>');
});
 
http.listen(3000, function(){
	console.log('listening on *:3000');
});

运行一下 Node.js 脚本:

node index.js

报错:

...
Error: Cannot find module 'express'
...

参考:http://www.cnblogs.com/yumianhu/p/3732668.html

到当前项目目录下执行命令:

npm link express

报错:

...
Error: Cannot find module 'socket.io'
...

参考:http://www.cnblogs.com/yumianhu/p/3732668.html

到当前项目目录下执行命令:

npm link socket.io

输出:

listening on *:3000

重启httpd,然后访问配置的虚拟主机 www.amon.org ,页面显示:

Welcome Realtime Server

证明部署成功。