nodejs搭建web服务器——学习笔记(一)
目录
准备环境
搭建HTTP服务
搭建HTTPS服务
在win10上,安装了Ubuntu的虚拟机。然后通过nodejs搭建最简单的http服务。步骤如下:
nodejs npm ,本机Ubuntu 16.04.
1、在选定的文件路径(没有要求)下,新建如下js文件。
// http_server.js 文件
'use strict' // 使用最严格的语法
var http = require('http'); // 引入http模块。相当于C++中的include头文件
var app = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type' : 'text/plain'});
res.end('Hello world!\n'); // 相应客户端请求
}).listen(8080, '0.0.0.0'); // 8080端口监听,任意IP网卡
2、在终端输入:
node http_server.js // 就可以启动服务了。
ctrl+c // 停止。或者直接关闭终端,也可以停止。
显示如下:
3、在Windows端,打开浏览器,输入地址和端口,就可以看到,服务器发来的响应了。
4、补充
//**********当然还有其他命令:
nohub node http_server.js // 后台启动服务(方法二)
forever start http_server.js // 后台启动服务(方法三,推荐。需要安装forever,sudo npm install forever -g // 全局安装)
forever stop http_server.js // 停止服务
//**************其他配合使用的命令:
sudo fuser -k 8080/tcp // 关闭某个端口。(有时候遇到端口占用,报错,通过这个命令,可以关闭端口)
sudo kill PID // (PID是线程ID)
sudo netstat -ntpl // 看一下是否被占用
lsof -i:4443 // 杀掉某个端口
1、为什么要使用HTTPS服务
chrome不允许http打开浏览器的涉嫌头和麦克风,因为http是不安全的。所以要引入https。
简单理解:对http明文内容,进行加密。实际还需要官方认证、证书公钥私钥等,内容比较多。
2、HTTPS基本原理
3、Nodejs搭建HTTPS服务
首先要有:生成HTTPS证书,私有证书(这个不可行),认证证书(这个可行)。可以向域名厂商购买域名,然后购买证书。
在项目的目录下,新建一个cert,存放证书和秘钥文件。
然后与cert同级目录中,新建一个public目录,用于发布。
然后与cert同级目录中,新建一个server.js文件。文件代码如下:
'use strict'
var http = require('http');
var https=require('https'); // 引入HTTPS模块
var fs = require('fs'); // 引入fs模块
var express=require('express');// 需要sudo npm install express安装
var serveIndex = require('serve-index');// 需要sudo npm install serve-index安装
var app = express();// 实例化
app.use(serveIndex('./public')) // 预览目录
app.use(express.static('./public')) ; // 发布静态目录的方法
// http server 创建http服务
var http_server=http.createServer(app);// 回调的时候,就会调用app,将参数传递给express,由express来处理
http_server.listen(80, '0.0.0.0'); // 80端口,或者8080都可以。
// https server 创建https服务
var options = {
key : fs.readFileSync('./cert/*.key'),
cert:fs.readFileSync('./cert/*.pem')
}
var https_server = https.createServer(option, app);
https_server.listen(443, '0.0.0.0');
引入express模块 // 专门用于处理web服务,这里只用其中一小部分
引入serve-index模块,//可以发布整个目录。目录下的所有文件,都共享,可以通过浏览器进行浏览器
安装完express serve-index之后,在当前目录下,就会产生node_modules目录。里面有相应的模块了。
直接运行node server.js
显示如下错误,说明证书无效。我确实也没有可以用的证书,因为在虚拟机上。所以,就把https相关的代码,先注释掉,然后测试http服务。重新启动,就成功了。
通过Windows端的chrome浏览器查看,就可以看到那两个文件和内容了。