WebRTC是音视频直播中最常用的一个框架,在使用的过程中,我们就需要实现一个服务器端。本文以nodejs实现一个服务器为例,讲述一下在centos下如何用nodejs实现一个简单的web服务器。
一、安装nodejs
在linux环境下安装nodejs有多重方式,主要分为安装包安装或者源码安装,这里为了方便,我们就直接用安装包的方式来安装。
1、用yum 命令安装
用以下命令来安装nodejs和依赖的npm服务
yum install -y nodejs
yum install -y npm
有时候因为没有配置对应的yum源的原因,就会出现找不到nodejs的情况,这个时候找yum源比较麻烦,我们就直接下载安装包来安装
2、用下载安装包的方式来安装nodejs
首先,我们到nodejs的下载网站上下载的包(这里选择了16版本,最新版本需要升级glib,比较麻烦),复制其下载链接
然后到linux命令行,用wget命令下载
wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
如果没有wget命令,用
yum install -y wget
来安装即可。
等待安装完成以后,先后执行以下命令解压下载的安装包
node-v16.14.0-linux-x64 是我下载的包名,对应到自己下载的包即可
xz -d node-v16.14.0-linux-x64.tar.xz
tar -xvf node-v16.14.0-linux-x64.tar
将解压后的文件移动到/usr/local/下面(这样做的目的是为了防止后面误删)
mv node-v16.14.0-linux-x64 /usr/local/node-v16.14.0-linux-x64
部署bin文件(这样就可以在随时随地使用node命令)
ln -s /usr/local/node-v16.14.0-linux-x64/bin/node /usr/bin/node
ln -s /usr/local/node-v16.14.0-linux-x64/bin/npm /usr/bin/npm
使用以下命令进行测试
node -v
npm -v
结果如下:
二、开发最简单的一个web服务器
1、编写一个简单的js服务文件MyFirstServer.js,内容如下
var http = require('http');
http.createServer(function (request, response) {// 发送 HTTP 头部// HTTP 状态值: 200 : OK// 内容类型: text/plain。并用charset=UTF-8解决输出中文乱码response.writeHead(200, {'Content-Type': 'text/plain; charset=UTF-8'});// 下句是发送响应数据response.end('Hello World! 这是简单的web服务器测试。\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
2、在服务端用node命令启动服务器
node MyFirstServer.js
结果如下:
3、浏览器中输入地址http://192.168.86.129:8888/(192.168.86.129是我虚拟机的地址,改成部署服务器的地址即可),即可看到信息:
三、开发一个简单的https的web服务器
1、生成自签名证书,参考 《Centos7下生成https自签名证书》
在js文件所在的目录新建一个cert的文件夹,将生成的server.key和server.pem复制到cert文件夹中
2、编写MyFirstHttpsServer.js 文件,内容如下:
'use strict'var https = require('https');
var fs = require('fs');var options = {key : fs.readFileSync('./cert/server.key'),cert : fs.readFileSync('./cert/server.pem')
}var app = https.createServer(options, function(req, res){res.writeHead(200, {'Content-Type': 'text/plain'});res.end('HTTPS:Hello World! https \n');}).listen(443, '0.0.0.0');
3、启动nodejs服务器
node MyFirstHttpsServer.js
4、在浏览器输入:https://192.168.86.129:443,在弹出的页面高级中选择仍然访问,页面如下:
四、开发一个简单的Web服务器
上面我们写了一个简单的http和https的服务器,里面的内容是直接写死的,在实际的开发中这样肯定不行,这里我们就用发布的两个模块serve-index和express,来简单开发一个包含静态文件的web服务器。
1、编写服务器的代码文件MyFirstWebServer.js ,内容如下
'use strict'var http = require('http');
var https = require('https');
var fs = require('fs');var serveIndex = require('serve-index')
var express = require('express');//设置一个app对象
var app = express();//映射静态文件
app.use(serveIndex('./public'));
app.use(express.static('./public'));//启动http服务
var http_server = http.createServer(app);
http_server.listen(80,'0.0.0.0');//启动https服务var options = {key : fs.readFileSync('./cert/server.key'),cert : fs.readFileSync('./cert/server.pem')
}var https_server = https.createServer(options,app);
https_server.listen(443,'0.0.0.0');
2、准备静态文件
我们在当前目录下新建一个public文件夹,并在里面新建1111.txt和2222.txt两个文件,结构如下:
3、安装serve-index和express两个模块
用下面的命令安装两个模块
npm install express serve-index
4、启动服务器
用以下命令启动服务器
node MyFirstWebServer.js
5、用浏览器进行测试
用http和https方式打开服务器,内容如下
打开具体的文件能够访问到文件里面的内容
后记
个人总结,欢迎转载、评论、批评指正