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方式打开服务器,内容如下

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


后记

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

相关推荐
冰橙子id1 小时前
centos7编译安装LNMP架构
mysql·nginx·架构·centos·php
十年磨一剑~2 小时前
centos查看开启关闭防火墙状态
linux·运维·centos
鳄鱼杆4 小时前
服务器 | Centos 9 系统中,如何部署SpringBoot后端项目?
服务器·spring boot·centos
杰哥技术分享4 小时前
在 CentOS 上安装 Docker 和 Docker Compose 并配置使用国内镜像源
linux·docker·centos
myhyyyyyy8 小时前
centos中的ulimit命令
centos
jiunian_cn20 小时前
【Linux】centos软件安装
linux·运维·centos
睡觉待开机20 小时前
0. MySQL在Centos 7环境安装
数据库·mysql·centos
舰长11521 小时前
Ubuntu挂载本地镜像源(像CentOS 一样挂载本地镜像源)
linux·ubuntu·centos
Chuncheng's blog1 天前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos
听风吹等浪起1 天前
CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
linux·服务器·centos