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方式打开服务器,内容如下
在这里插入图片描述
在这里插入图片描述
打开具体的文件能够访问到文件里面的内容
在这里插入图片描述


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C/C++奇数求和 2021年3月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C奇数求和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C奇数求和 2021年3月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 计算非负整数 m 到 n(包括m 和 n &#xff…

CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局

一、概述 操作系统是计算机系统的核心软件,它管理和控制着计算机的硬件和软件资源,为用户和应用程序提供了一个统一、高效、安全的运行环境。操作系统的发展历史也是计算机技术的发展历史的重要组成部分,它见证了计算机从单机到网络&#xf…

2、NLP文本预处理技术:词干提取和词形还原

一、说明 在上一篇文章中,我们解释了文本预处理的重要性,并解释了一些文本预处理技术。在本文中,我们将介绍词干提取和词形还原主题。 词干提取和词形还原是两种文本预处理技术,用于将单词还原为其基本形式或词根形式。这些技术的…

Linux 命令速查

Network ping ping -c 3 -i 0.01 127.0.0.1 # -c 指定次数 # -i 指定时间间隔 日志 一般存放位置: /var/log,包含:系统连接日志 进程统计 错误日志 常见日志文件说明 日志功能access-logweb服务访问日志acct/pacct用户命令btmp记录失…

目标检测 图像处理 计算机视觉 工业视觉

目标检测 图像处理 计算机视觉 工业视觉 工业表盘自动识别(指针型和数值型)智能水尺识别电梯中电动车识别,人数统计缺陷检测(半导体,电子元器件等)没带头盔检测基于dlib的人脸识别抽烟检测和睡岗检测/驾驶疲…

百度 | 文心一言也开始收费了

好久没用文心一言了 之前一直用ChatGPT的 今天打开文心一言一看,好家伙 出了文心大模型4.0,想体验一下来着 可惜是收费的 看下价格,没买 50块钱一个月,对比ChatGPT4来说,确实不算贵 毕竟gpt4一个月20美刀 ,…

C++ 赋值运算重载,const成员,取地址及const取地址操作符重载

C 赋值运算重载,const成员,取地址及const取地址操作符重载 1. 赋值运算符重载1.1 运算符重载1.2 赋值运算符重载1.3 前置/--和后置/--重载 2. const成员3. 取地址及const取地址操作符重载 所属专栏:C“嘎嘎" 系统学习❤️ 🚀…

R语言在生态环境领域中的实践技术应用

R语言作为新兴的统计软件,以开源、自由、免费等特点风靡全球。生态环境领域研究内容广泛,数据常多样而复杂。利用R语言进行多元统计分析,从复杂的现象中发现规律、探索机制正是R的优势。为此,以鱼类、昆虫、水文、地形等多样化的生…

[Machine Learning][Part 7]神经网络的基本组成结构

这里我们将探索神经元/单元和层的内部工作原理。特别是,与之前学习的回归/线性模型和逻辑模型进行比较。最后接介绍tensorflow以及如何利用tensorflow来实现这些模型。 神经网络和大脑的神经元工作原理类似,但是比大脑的工作原理要简单的多。大脑中神经元的工作原理…

LLMs之Agent之AutoGen:AutoGen的简介、安装、使用方法之详细攻略

LLMs之Agent之AutoGen:AutoGen的简介、安装、使用方法之详细攻略 目录 AutoGen的简介、安装、使用方法 1、多Agent对话框架 2、AutoGen的对话流程 3、增强的LLM推理 AutoGen的安装 1、安装 2、快速测试 AutoGen的使用方法 1、基础用法 (1)、启动两个代理之…

进口跨境电商商城源码(海关179接口+支持多平台搭建+提供多终端支持)

海关179接口 进口跨境电商商城源码提供了与海关179接口的集成,实现了便捷的报关操作。海关179接口是跨境电商进口的关键链接,通过该接口可以快速准确地完成商品的报关手续。进口商可以通过商城源码直接与海关进行数据交互,减少了繁琐的人工操…

SpringMVC Day 11 : 零 xml 配置

前言 欢迎来到《Spring MVC Day 11: 零XML配置》!在之前的学习中,我们已经掌握了如何使用Spring MVC框架构建灵活、高效的Web应用程序。然而,我们可能还记得那些繁琐的XML配置文件,它们是我们在过去几天中使用的方式。 好消息是…

虚拟人运营系统介绍丨支持实时互动/直播/短视频创作,赋能元宇宙营销

2023年,以虚拟人为代表的元宇宙营销成为品牌营销黑马。 品牌通过虚拟人IP运营,形成具有一定影响力的品牌效应,围绕“内容持续输出——粉丝沉淀——优质运营——商业变现”的创新模式,打破同质化营销形式,利用虚拟人IP以…

chatgpt生成文本的底层工作原理是什么?

文章目录 🌟 ChatGPT生成文本的底层工作原理🍊 一、数据预处理🍊 二、模型结构🍊 三、模型训练🍊 四、文本生成🍊 总结 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN…

ElasticSearch搜索技术深入与聚合查询实战

ES分词器详解 基本概念 分词器官方称之为文本分析器,顾名思义,是对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。 分词发生时…

Flink1.18新特性生产环境应用的重点解读!

大家好,我是你们的群主王知无呀。 Flink 1.18已经于近期发布了。在这个新版本中新增了很多新的功能和特性。在这些特性中,有一些是生产环境非常重要的能力,大家在使用过程中可以重点参考和了解其中的原理。 算子级别状态保留时间TTL设置 首先…

关于嵌入式rtthread系统与单片机芯片

简介 我估计已经有很久没更新了,近一年都在某个国企里工作,我做的就是嵌入式工程师的岗位,最近才刚刚退出来,想来说说自己的工作使用的软件和系统。 本身进公司的时候,其实做的就是写单片机的板子的程序的工作&#x…

Git工作原理和常见问题处理方案

博客定位Git工作区域工作区域划分暂存区设计目的 Git基本操作核心操作初始化和配置指令 HEAD指针Git版本回滚指令介绍reset模式reset hard使用场景reset soft使用场景reset mixed使用场景reset使用注意事项checkout使用场景 Git分支管理什么是分支分支应用场景分支相关指令被合…

在Photoshop中如何校正倾斜的图片

在Photoshop中如何校正倾斜的图片呢?今天就教大家如何操作。 将需要操作的图片拉到PS软件中,自动形成项目。 点击上方“滤镜”中的“镜头校正”。 进入“镜头校正”窗口,点击左侧的“拉直工具”。文章源自设计学徒自学网-http://www.sx1c.co…

【webrtc】 对视频质量的码率控制的测试与探索

目录 环境设置 transport-cc goog-remb (webrtc中的两种码率算法) 修改成remb算法 测试 效果 后续 可参考工程 环境设置 要到meshx上操作 telnet 112 然后执行factory_env show |grep meshx_ip 之后telnet meshx_ip 用户名admin 密码****.119 执行一下r…