nodejs搭建web服務器——學習筆記(一)
目錄
在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服務
- 個人隱私及安全原因
- 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服務。重新啓動,就成功了。
這裏僅啓動了http的服務。
通過Windows端的chrome瀏覽器查看,就可以看到那兩個文件和內容了。