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

  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-indexexpress,来简单开发一个包含静态文件的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-indexexpress两个模块

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

npm install express serve-index

在这里插入图片描述

4、启动服务器

用以下命令启动服务器

node MyFirstWebServer.js

5、用浏览器进行测试

用http和https方式打开服务器,内容如下
在这里插入图片描述
在这里插入图片描述
打开具体的文件能够访问到文件里面的内容
在这里插入图片描述


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/155390.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0022Java程序设计-ssm微信小程序社区互助平台

文章目录 **摘要**目录系统设计开发环境 摘要 首先,论文一开始便是清楚的论述了小程序的研究内容。其次剖析系统需求分析,弄明白“做什么”,分析包括业务分析、业务流程分析、用例分析,更进一步明确系统的需求。然后在明白了小程序的需求基础上,需要进一步地设计系…

钡铼技术助力ARM工控机在智慧交通中的创新应用

在交通运输领域,钡铼技术ARM工控机可以实现以下功能: 实时监控和管理:利用钡铼技术ARM工控机,可以对交通运输中的车辆、船只、飞机等进行实时监测和管理,帮助调度员提高车辆调度和路线规划的准确性和效率。 安全保障&…

【Linux进程控制】进程控制专篇

【Linux进程控制】进程控制专篇 目录 【Linux进程控制】进程控制专篇进程创建fork函数写实拷贝fork常规用法fork调用失败的原因 进程终止进程退出场景进程常见退出方法_exit函数return退出 进程等待进程等待必要性进程等待的方法获取子进程status 具体代码实现进程程序替换替换…

flink 反压原理

背景 在flink中由于数据倾斜或者数据处理速率的不匹配,很容易引起反压,本文就看一下flink反压的原理 flink反压原理 flink全流程pineline的反压实现其实依赖于TaskManager之间的反压和TaskManager内部的反压来实现 1.TaskManager之间的反压 2.Task…

【Linux】虚拟机部署与发布J2EE项目(Linux版本)

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯&#x1f3a…

虚拟机上的linux centos7无法连接ssh

1、排查有没有安装 openssh-server,在终端中输入 yum list installed | grep openssh-server此处显示已经安装了 openssh-server,如果又没任何输出显示表示没有安装 openssh-server,通过输入 yum install openssh-server进行安装 2、找到了…

喜报!CACTER邮件安全网关荣获2023鲲鹏应用创新大赛广东赛区三等奖

近期,2023鲲鹏应用创新大赛广东赛区暨广东省信息技术应用创新产业联盟创新大赛圆满落幕,Coremail凭借“基于鲲鹏CPU的邮件网关一体机解决方案”,荣获“金融行业方向”三等奖。 ​ 鲲鹏凌粤 展翅湾区 本届大赛广东区域赛以“鲲鹏凌粤 展翅湾…

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传

第一个input标签效果 第二个input标签的效果 el-table的改造效果 <template><div class"outerBox"><div class"analyze" v-if"status"><div class"unFile"><div class"mainBox"><img clas…

【零参考GAN:Pansharpening】

ZeRGAN: Zero-Reference GAN for Fusion of Multispectral and Panchromatic Images &#xff08;用于多光谱和全色图像融合的零参考GAN&#xff09; 本文提出了一种融合低空间分辨率多光谱(LR MS)和高空间分辨率全色(PAN)图像的新的全色锐化方法–零参考生成对抗网络(ZeRGAN…

正点原子嵌入式linux驱动开发——Linux CAN驱动

CAN是目前应用非常广泛的现场总线之一&#xff0c;主要应用于汽车电子和工业领域&#xff0c;尤其是汽车领域&#xff0c;汽车上大量的传感器与模块都是通过CAN总线连接起来的。CAN总线目前是自动化领域发展的热点技术之一&#xff0c;由于其高可靠性&#xff0c;CAN总线目前广…

C/C++数据结构之时间复杂度和空间复杂度详细解析以及力扣刷题

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2.算法的…

QCustomPlot 瀑布图色度条

1、单独应用在一个QWidget中。 通过新建一个瀑布图后移除瀑布图即可只留住色度条。 QCustomPlot *customPlot ui->widget;QCPColorScale *colorScale new QCPColorScale(customPlot);customPlot->plotLayout()->addElement(0, 1, colorScale); // add it to the ri…