Centos下用nodejs实现一个简单的web服务器

WebRTC是音视频直播中最常用的一个框架,在使用的过程中,我们就需要实现一个服务器端。本文以nodejs实现一个服务器为例,讲述一下在centos下如何用nodejs实现一个简单的web服务器。

一、安装nodejs

在linux环境下安装nodejs有多重方式,主要分为安装包安装或者源码安装,这里为了方便,我们就直接用安装包的方式来安装。

1、用yum 命令安装

用以下命令来安装nodejs和依赖的npm服务

shell 复制代码
yum install -y nodejs 
yum install -y npm

有时候因为没有配置对应的yum源的原因,就会出现找不到nodejs的情况,这个时候找yum源比较麻烦,我们就直接下载安装包来安装

2、用下载安装包的方式来安装nodejs

首先,我们到nodejs的下载网站上下载的包(这里选择了16版本,最新版本需要升级glib,比较麻烦),复制其下载链接

然后到linux命令行,用wget命令下载

shell 复制代码
wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz

如果没有wget命令,用

shell 复制代码
yum install -y wget

来安装即可。

等待安装完成以后,先后执行以下命令解压下载的安装包
node-v16.14.0-linux-x64 是我下载的包名,对应到自己下载的包即可

shell 复制代码
xz -d node-v16.14.0-linux-x64.tar.xz
tar -xvf node-v16.14.0-linux-x64.tar 

将解压后的文件移动到/usr/local/下面(这样做的目的是为了防止后面误删)

shell 复制代码
mv node-v16.14.0-linux-x64 /usr/local/node-v16.14.0-linux-x64

部署bin文件(这样就可以在随时随地使用node命令)

shell 复制代码
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

使用以下命令进行测试

shell 复制代码
node -v
npm -v

结果如下:

二、开发最简单的一个web服务器

1、编写一个简单的js服务文件MyFirstServer.js,内容如下

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命令启动服务器

shell 复制代码
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 文件,内容如下:

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服务器

shell 复制代码
node MyFirstHttpsServer.js

4、在浏览器输入:https://192.168.86.129:443,在弹出的页面高级中选择仍然访问,页面如下:

四、开发一个简单的Web服务器

上面我们写了一个简单的http和https的服务器,里面的内容是直接写死的,在实际的开发中这样肯定不行,这里我们就用发布的两个模块serve-indexexpress,来简单开发一个包含静态文件的web服务器。

1、编写服务器的代码文件MyFirstWebServer.js ,内容如下

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-indexexpress两个模块

用下面的命令安装两个模块

shell 复制代码
npm install express serve-index

4、启动服务器

用以下命令启动服务器

shell 复制代码
node MyFirstWebServer.js

5、用浏览器进行测试

用http和https方式打开服务器,内容如下

打开具体的文件能够访问到文件里面的内容


后记

个人总结,欢迎转载、评论、批评指正

相关推荐
肖永威8 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
tian2kong9 小时前
Centos 7 修改YUM镜像源地址为阿里云镜像地址
linux·阿里云·centos
mengao12349 小时前
centos 服务器 docker 使用代理
服务器·docker·centos
布鲁格若门9 小时前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda
传而习乎13 小时前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
谭震鸿1 天前
Zookeeper集群搭建Centos环境下
分布式·zookeeper·centos
a_安徒生1 天前
window系统改为Linux系统
linux·windows·centos·系统安全
杰哥的技术杂货铺2 天前
Centos 7 安装 Docker 最新版本
linux·docker·centos
jerry-892 天前
CentOS 7安装SSHFS 实现远程主机目录 挂载为本地目录
linux·运维·centos
moxiaoran57532 天前
Centos使用docker搭建Graylog日志平台
docker·centos·graylog