Ubuntu下,使用nodejs搭建最简单的http服务

nodejs搭建web服务器——学习笔记(一)

目录

准备环境

搭建HTTP服务

搭建HTTPS服务


在win10上,安装了Ubuntu的虚拟机。然后通过nodejs搭建最简单的http服务。步骤如下:

准备环境

nodejs  npm ,本机Ubuntu 16.04.

搭建HTTP服务

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 // 杀掉某个端口

搭建HTTPS服务

1、为什么要使用HTTPS服务

  1. 个人隐私及安全原因
  2. https是未来的趋势

chrome不允许http打开浏览器的涉嫌头和麦克风,因为http是不安全的。所以要引入https。

简单理解:对http明文内容,进行加密。实际还需要官方认证、证书公钥私钥等,内容比较多。

2、HTTPS基本原理

  1. 客户端向服务端发送一个握手。
  2. 服务端下发证书给客户端。
  3. 客户端与服务端交换秘钥/算法协商。
  4. 数据传输。

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服务。重新启动,就成功了。


这里仅启动了http的服务。

通过Windows端的chrome浏览器查看,就可以看到那两个文件和内容了。

猜你喜欢

转载自blog.csdn.net/qq_34732729/article/details/106863918