3-1 Web服务器工作原理






nodejs一个V8引擎,Chrome也一个V8引擎。
3-2 Nodejs环境搭建



下载地址 http://nodejs.cn/download/
1)安装包
wget https://cdn.npm.taobao.org/dist/node/v16.3.0/node-v16.3.0-linux-x64.tar.xzxz -d node-v16.3.0-linux-x64.tar.xztar -xf node-v16.3.0-linux-x64.tarsudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/node /usr/local/binsudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/npm /usr/local/binsudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/npx /usr/local/binubuntu@VM-8-4-ubuntu:~/nodejs/node-v16.3.0-linux-x64/bin$ sudo node --versionv16.3.0
2)源码安装-课程讲这个
安装nodejs
wget https://npm.taobao.org/mirrors/node/v16.3.0/node-v16.3.0.tar.gz
tar  -xf  node-v16.3.0.tar.gz
cd node-v16.3.0/
./configure —prefix==/usr/local/nodejs
make -j4
sudo make install
添加环境变量
vi ~/.bashrc
export PATH=/usr/local/nodejs/bin:$PATH
source ~/.bashrc
env | grep PATH
又或者直接
 sudo ln -s /usr/local/nodejs/bin /usr/local/bin
3-3 最简单的http服务

'use strict'var http = require('http');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');
“use strict” 的目的是指定代码在严格条件下执行。
严格模式下你不能使用未声明的变量。
https://www.runoob.com/js/js-strict.html
node server.js
netstat -ntpl查看监听端口

后台启动
npm install forever -gforever start app.jsforever stop app.js
3-4 创建https服务




可以手动创建证书
mkdir ‐p ~/certcd ~/cert# openssl genrsa 用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护。openssl genrsa -out key.pem 2048# openssl req生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书。openssl req ‐new ‐x509 ‐key key.pem ‐out cert.pem ‐days 1095
代码server.js
'use strict'var https = require('https');var fs = require('fs');var options = {key : fs.readFileSync('./cert/1557605_www.learningrtc.cn.key'),cert : fs.readFileSync('./cert/1557605_www.learningrtc.cn.pem')}var app = https.createServer(options, function(req, res){res.writeHead(200, {'Content-Type': 'text/plain'});res.end('HTTPS:Hello World!\n');}).listen(443, '0.0.0.0');
3-5 实现一个真正的 Web服务器

serve-index可以使得我们查看整个发布文件目录
'use strict'var http = require('http');var https = require('https');var fs = require('fs');// 将文件夹中文件列表显示到浏览器中。var serveIndex = require('serve-index');var express = require('express');var app = express();// 下面2行代码,顺序不能换// 浏览静态目录(浏览目录中所有文件)app.use(serveIndex('./public'));// 发布静态目录app.use(express.static('./public'));var options = {key : fs.readFileSync('./cert/1557605_www.learningrtc.cn.key'),cert : fs.readFileSync('./cert/1557605_www.learningrtc.cn.pem')}var https_server = https.createServer(options, app);https_server.listen(443, '0.0.0.0');var http_server = http.createServer(app);http_server.listen(80, '0.0.0.0');
安装express,serve-index前的目录结构。
webserver.zip
npm install expressnpm install serve-indexsudo node server.js后台运行sudo nohup node server.js &或者sudo forever start server.js
运行结果
