导航不迷路:
1、搭建nodejs http服务器(本文)
ubuntu 安装nodejs
- 查找源上有那些nodejs:
sudo apt-cache search nodejs
- 安装nodejs:
sudo apt install nodejs
- 安装npm:
sudo apt install npm
备注:
如果安装失败,提示not found xxx,那么,更新下软件包索引:
sudo apt update
编写nodejs脚本:
思路:
- 通过require引入http模块
- 创建http服务
- 监听端口,处理客户端访问
nodejs代码:
$ vim http_server.js
'use strict'
var http = require('http');
var app = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type':'text/plain'});
res.end('Hello, I am a http server\n');
}).listen(8080, '0.0.0.0');
解释下:
作用是:监听在本地的 8080 端口,任何访问该端口的请求都会返回一个包含 “Hello, I am a http server” 文本的响应。下面是对这段代码的解释:
- ‘use strict’;: 这是 JavaScript 的严格模式声明,它可以帮助开发者避免一些常见的错误,并使代码更加健壮。
- var http = require(‘http’);:
这一行引入了 Node.js 的内置模块 http,用于创建 HTTP 服务器和处理 HTTP 请求。 - var app = http.createServer(function(req, res){…}).listen(8080, ‘0.0.0.0’);:
- 这段代码创建了一个 HTTP 服务器实例 app,并通过 listen 方法将其绑定到 8080 端口和 IP 地址 0.0.0.0。
- createServer 方法接受一个回调函数作为参数,该函数会在每次请求到达服务器时被调用。这个回调函数接收两个参数 req(请求对象)和 res(响应对象)。
- 在回调函数中,通过 res.writeHead(200, {‘Content-Type’:‘text/plain’}); 设置了响应的 HTTP 状态码为 200(表示成功),并且指定了响应的内容类型为纯文本。
- res.end(‘Hello, I am a http server\n’); 发送了包含 “Hello World” 文本的响应给客户端,并通过 res.end() 结束了响应。
运行代码:
$ node http_server.js
看下服务器端口监听情况:
ubuntu@VM-4-9-ubuntu:~$ netstat -ntpl
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 21005/node
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
ubuntu@VM-4-9-ubuntu:~$
发现8080端口已经被监听了!
使用浏览器进行访问:
后台永久运行:
当然,作为服务器,你怎么可能这么运行呢?更改启动方式,让可以后台运行:
安装forever工具:
$ npm install forever -g
一定要加-g,表示可以在机器任意目录执行forever,否则只能在安装目录。
启动服务:
$ forever start http_server.js
总结:
当然,这个是我们搭建来学习用的,真正搭建服务肯定还得使用https服务,还得申请证书了,后面介绍!