3-1 Web服务器工作原理

图片.png
图片.png
图片.png
图片.png
图片.png
图片.png
nodejs一个V8引擎,Chrome也一个V8引擎。

3-2 Nodejs环境搭建

图片.png
图片.png
图片.png
下载地址 http://nodejs.cn/download/
图片.png

1)安装包

  1. wget https://cdn.npm.taobao.org/dist/node/v16.3.0/node-v16.3.0-linux-x64.tar.xz
  2. xz -d node-v16.3.0-linux-x64.tar.xz
  3. tar -xf node-v16.3.0-linux-x64.tar
  4. sudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/node /usr/local/bin
  5. sudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/npm /usr/local/bin
  6. sudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/npx /usr/local/bin
  7. ubuntu@VM-8-4-ubuntu:~/nodejs/node-v16.3.0-linux-x64/bin$ sudo node --version
  8. v16.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服务

图片.png

  1. 'use strict'
  2. var http = require('http');
  3. var app = http.createServer(function(req, res){
  4. res.writeHead(200, {'Content-Type':'text/plain'});
  5. res.end('Hello World\n');
  6. }).listen(8080, '0.0.0.0');

“use strict” 的目的是指定代码在严格条件下执行。
严格模式下你不能使用未声明的变量。
https://www.runoob.com/js/js-strict.html

node server.js
netstat -ntpl查看监听端口
图片.png
图片.png
后台启动

  1. npm install forever -g
  2. forever start app.js
  3. forever stop app.js

3-4 创建https服务

图片.png
图片.png
图片.png
图片.png
可以手动创建证书

  1. mkdir p ~/cert
  2. cd ~/cert
  3. # openssl genrsa 用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护。
  4. openssl genrsa -out key.pem 2048
  5. # openssl req生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书。
  6. openssl req new x509 key key.pem out cert.pem days 1095

代码server.js

  1. 'use strict'
  2. var https = require('https');
  3. var fs = require('fs');
  4. var options = {
  5. key : fs.readFileSync('./cert/1557605_www.learningrtc.cn.key'),
  6. cert : fs.readFileSync('./cert/1557605_www.learningrtc.cn.pem')
  7. }
  8. var app = https.createServer(options, function(req, res){
  9. res.writeHead(200, {'Content-Type': 'text/plain'});
  10. res.end('HTTPS:Hello World!\n');
  11. }).listen(443, '0.0.0.0');

图片.png

3-5 实现一个真正的 Web服务器

图片.png
serve-index可以使得我们查看整个发布文件目录
图片.png

  1. 'use strict'
  2. var http = require('http');
  3. var https = require('https');
  4. var fs = require('fs');
  5. // 将文件夹中文件列表显示到浏览器中。
  6. var serveIndex = require('serve-index');
  7. var express = require('express');
  8. var app = express();
  9. // 下面2行代码,顺序不能换
  10. // 浏览静态目录(浏览目录中所有文件)
  11. app.use(serveIndex('./public'));
  12. // 发布静态目录
  13. app.use(express.static('./public'));
  14. var options = {
  15. key : fs.readFileSync('./cert/1557605_www.learningrtc.cn.key'),
  16. cert : fs.readFileSync('./cert/1557605_www.learningrtc.cn.pem')
  17. }
  18. var https_server = https.createServer(options, app);
  19. https_server.listen(443, '0.0.0.0');
  20. var http_server = http.createServer(app);
  21. http_server.listen(80, '0.0.0.0');

安装express,serve-index前的目录结构。
图片.png
webserver.zip

  1. npm install express
  2. npm install serve-index
  3. sudo node server.js
  4. 后台运行
  5. sudo nohup node server.js &
  6. 或者
  7. sudo forever start server.js

运行结果
图片.png