CentOS7源码安装node.js和webSocket
学习参考:http://ourjs.com/detail/529ca5950cb6498814000005
如果iptables是开启的,要先加入80端口和socket监听端口(可以自己设置)
官网:https://nodejs.org
下载页面:https://nodejs.org/download/release/
中文手册:http://nodeapi.ucdok.com/#/api/
# yum -y installgcc gcc-c++ openssl-devel libssl-dev (如果是安装到32位系统需要再安装:yum install glibc.i686 zlib.i686)
我在编译安装node时出现下面错误,解决办法:
# yum whatprovides libstdc++.so.6 //找到对于依赖的包,然后安装
# cd/data/software && wget -c https://nodejs.org/download/release/latest-v9.x/node-v9.0.0-linux-x86.tar.gz&& tar -zxvf node-v9.0.0-linux-x86.tar.gz && cd node-v9.0.0-linux-x86/bin && ./node
出现上图说明nodejs安装成功了
# cp /data/software/node-v9.0.0-linux-x86/bin/* /usr/sbin/ && node -v
# cd/data/software/node-v9.0.0-linux-x86/lib/node_modules/npm &&./configure && make &&make install
修改npm的命令文件中的basedir路径,否则执行npm命令时老是报错
# cd /usr/lib/node_modules/npm/bin&& vi npm
basedir="/usr/lib"
# cp/usr/lib/node_modules/npm/bin/npm /usr/sbin/npm && npm -v
上图说明npm安装成功
使用npm命令安装express和socket.io 如果只是临时安装 Express,不想将它添加到依赖列表中,只需略去 --save 参数即可,安装 Node 模块时,如果指定了 --save 参数,那么此模块将被添加到 package.json 文件中 dependencies 依赖列表中。 然后通过 npm install 命令即可自动安装依赖列表中所列出的所有模块。
如果安装上面内容出错时,则给npm初始化,生成一个package.json文件:
# mkdir -p /data/software/node_modules && cd /data/software/node_modules&& npm init
下面红色标记的要手动输入:
最后生成下面红色标记文件:
# cd /usr/lib/node_modules&& npm install --save express && npm install --savesocket.io && ls
如上图红色标记,说明安装成功
建立网站根目录:
# mkdir /dataweb/www&& cd /dataweb/www && mkdir nodejs //作为nodejs存放服务器端的js目录,要和网页根目录分开,而且不能通过url地址访问的到
把express 和 socket.io 拷贝过来,因为server.js要引用:
# cp -r /data/software/node_modules/socket.io/ nodejs/
# cp -r /data/software/node_modules/express/ nodejs/
# cd nodejs
# viserver.js //作为webSocket服务器端
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 RealtimeServer</h1>');
});
//在线用户
var onlineUsers ={};
//当前在线人数
var onlineCount =0;
io.on('connection',function(socket){
console.log('a user connected');
//监听新用户加入
socket.on('login', function(obj){
//将新加入用户的唯一标识当作socket的名称,后面退出的时候会用到
socket.name = obj.userid;
//检查在线列表,如果不在里面就加入
if(!onlineUsers.hasOwnProperty(obj.userid)) {
onlineUsers[obj.userid] = obj.username;
//在线人数+1
onlineCount++;
}
//向所有客户端广播用户加入
io.emit('login',{onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});
console.log(obj.username+'加入了聊天室');
});
//监听用户退出
socket.on('disconnect', function(){
//将退出的用户从在线列表中删除
if(onlineUsers.hasOwnProperty(socket.name)) {
<