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瀏覽器查看,就可以看到那兩個文件和內容了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章