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.xz
xz -d node-v16.3.0-linux-x64.tar.xz
tar -xf node-v16.3.0-linux-x64.tar
sudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/node /usr/local/bin
sudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/npm /usr/local/bin
sudo ln -s /home/ubuntu/nodejs/node-v16.3.0-linux-x64/bin/npx /usr/local/bin
ubuntu@VM-8-4-ubuntu:~/nodejs/node-v16.3.0-linux-x64/bin$ sudo node --version
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服务
'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 -g
forever start app.js
forever stop app.js
3-4 创建https服务
可以手动创建证书
mkdir ‐p ~/cert
cd ~/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 express
npm install serve-index
sudo node server.js
后台运行
sudo nohup node server.js &
或者
sudo forever start server.js
运行结果