ndoejs搭建http2.0服务器--菜鸟级教程【草稿试验版】
来源:互联网 发布:cms 系统 编辑:程序博客网 时间:2024/06/04 00:34
前言
最近无意中看到http2.0协议,突然感觉这个可以推广的话,那么对于web的性能和应用【譬如,在线实时直播】有很大的补充,所以现在来进行http/2的服务器环境搭建。
csr和key证书还有crt证书
在线证书生成工具
好了,我们需要的就是csr的内容还有key的内容,要先保存下来–这个证书当然是不可信的,但是我们用来做做开发,足够了。
对了,还有申请crt文件,将csr的内容复制到:
下面,然后申请即可。
这个真的方便,好了,我们将key,csr,crt都保存下来,
为了方便起见,我保存为server.key 和 server.csr,server.crt.
nodejs安装
这里用nodejs来搭建环境,那么,当然请安装一下nodejs,我用的是nodejs4这里就不废话如何安装nodejs了。
http2模块安装
npm install http2 -g
对了,顺便提醒一下,nodejs假如自作主张很聪明地帮自己设定了代理,那么就会出现下面这种情况:
npm ERR! Error: connect ECONNREFUSEDnpm ERR! at errnoException (net.js:878:11)npm ERR! at Object.afterConnect [as oncomplete] (net.js:869:19)npm ERR! { [Error: connect ECONNREFUSED]npm ERR! code: 'ECONNREFUSED',npm ERR! errno: 'ECONNREFUSED',npm ERR! syscall: 'connect' }npm ERR!npm ERR! If you are behind a proxy, please make sure that thenpm ERR! 'proxy' config is set properly. See: 'npm help config'npm ERR! System Windows_NT 6.2.9200npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "nodemailer"npm ERR! cwd C:\Users\yynpm ERR! node -v v0.10.2npm ERR! npm -v 1.2.15npm ERR! syscall connectnpm ERR! code ECONNREFUSEDnpm ERR! errno ECONNREFUSEDnpm ERR! stack Error: connect ECONNREFUSEDnpm ERR! stack at errnoException (net.js:878:11)npm ERR! stack at Object.afterConnect [as oncomplete] (net.js:869:19)npm ERR!npm ERR! Additional logging details can be found in:npm ERR! C:\Users\yy\npm-debug.lognpm ERR! not ok code 0这条错误,你的代理怎么怎么地,万恶了很久,解决其实很简单啊,npm可能是默认的proxy http://127.0.0.1.8087$ npm config set proxy null把代理去掉就行了
虽然成功了,但是有一些警告,这些警告是说有这些依赖找不到,于是我们手动安装这些东西吧,尝试更新一下模块,出错,尝试安装对应版本,也出错:
然后我们看清楚点,原来是body parser里面的bytes和iconv-lite版本太旧了,好了,研究一下如何升级body-parser 下面的两个子模块。
下面这篇文章可以帮到大家:
这里写链接内容
npm 安装出现 UNMET DEPENDENCY 的解决方案Posted on 2014 年 2 月 27 日npm install express -g...npm list -gD:\Users\Ls\AppData\Roaming\npm└─┬ express@3.4.8 ├── buffer-crc32@0.2.1 ├─┬ commander@1.3.2 │ └── keypress@0.1.0 ├─┬ connect@2.12.0 │ ├── UNMET DEPENDENCY batch 0.5.0 │ ├── UNMET DEPENDENCY bytes 0.2.1 │ ├── UNMET DEPENDENCY multiparty 2.2.0 │ ├── UNMET DEPENDENCY negotiator 0.3.0 │ ├── UNMET DEPENDENCY pause 0.0.1 │ ├── UNMET DEPENDENCY qs 0.6.6 │ ├── UNMET DEPENDENCY raw-body 1.1.2 │ └── UNMET DEPENDENCY uid2 0.0.3 ├── cookie@0.1.0 ├── cookie-signature@1.0.1 ├── debug@0.7.4 ├── fresh@0.2.0 ├── merge-descriptors@0.0.1 ├── methods@0.1.0 ├── mkdirp@0.3.5 ├── range-parser@0.0.4 └─┬ send@0.1.4 └── mime@1.2.11npm ERR! missing: batch@0.5.0, required by connect@2.12.0npm ERR! missing: bytes@0.2.1, required by connect@2.12.0npm ERR! missing: pause@0.0.1, required by connect@2.12.0...npm ERR! not ok code 0今天安装一些模块的时候发现 npm install 到了一个点之后就卡住了一样等了半天一直不动,接着中断看了下出现安装出现了 UNMET DEPENDENCY 的 模块,这个时候如果重新 install 一便的话,又会重头开始,如果又碰到卡壳就很烦。所以用list 命令查看之后决定用另外一种解决方案来解决这个问题,即跑到缺失模块的目录下去安装:D:\Users\Ls\AppData\Roaming\npm\node_modules\express\node_modules\connect>npm install uid2...D:\Users\Ls\AppData\Roaming\npm\node_modules\express\node_modules\connect>npm list -gD:\Users\Ls\AppData\Roaming\npm└─┬ express@3.4.8 ├── buffer-crc32@0.2.1 ├─┬ commander@1.3.2 │ └── keypress@0.1.0 ├─┬ connect@2.12.0 │ ├── UNMET DEPENDENCY batch 0.5.0 │ ├── UNMET DEPENDENCY bytes 0.2.1 │ ├── UNMET DEPENDENCY multiparty 2.2.0 │ ├── UNMET DEPENDENCY negotiator 0.3.0 │ ├── UNMET DEPENDENCY pause 0.0.1 │ ├── UNMET DEPENDENCY qs 0.6.6 │ ├── UNMET DEPENDENCY raw-body 1.1.2 │ └── uid2@0.0.3 ├── cookie@0.1.0 ├── cookie-signature@1.0.1 ├── debug@0.7.4 ├── fresh@0.2.0 ├── merge-descriptors@0.0.1 ├── methods@0.1.0 ├── mkdirp@0.3.5 ├── range-parser@0.0.4 └─┬ send@0.1.4 └── mime@1.2.11npm ERR! missing: batch@0.5.0, required by connect@2.12.0npm ERR! missing: qs@0.6.6, required by connect@2.12.0npm ERR! missing: bytes@0.2.1, required by connect@2.12.0npm ERR! missing: pause@0.0.1, required by connect@2.12.0npm ERR! missing: raw-body@1.1.2, required by connect@2.12.0npm ERR! missing: negotiator@0.3.0, required by connect@2.12.0npm ERR! missing: multiparty@2.2.0, required by connect@2.12.0npm ERR! not ok code 0看 log 发现已经解决了一个 uid2 的依赖,剩下的依次类推,在该 connect 模块下手动 install 就可以解决这些 UNMET DEPENDENCY 的问题了。(用 sublime 拼一下很快的)
我们观察一下 body parser里面的结构:
于是可以发现,body parser的node-module就是存放子模块的地方,于是我们可以这样升级里面的子模块:
直接用 npm install 模块名称@版本号 这个命令即可,之前用了那么多命令是试验一下其他命令能不能更新模块的。
还是这样–额,抱歉误导大家了,这里的路径是appData下面的。。我们需要在这里面升级。。
经过千辛万苦,终于成功安装http2了。
新建nodejs项目
新建一个nodejs项目,然后编写测试代码。好了,我用的是wbstorm.
打开webstorm,创建一个空项目
然后就会看到一个新项目–真的什么都没有的项目
上一步有没有将csr和key保存下来?我保存下来了,名字叫server.crt和server.key好了,放进项目下面,当然,也新建一个app.js作为入口文件。
那么,下一步就是写测试代码了,这就是测试代码:
//const spdy = require('spdy');--这个暂时不用管,spdy是http2的前身。const http2=require('http2');const path = require('path');const fs = require('fs');var options = { key: fs.readFileSync('./server.key'), //读取key cert: fs.readFileSync('./server.crt') //读取crt};http2.createServer(options, function(request, response) { response.end('Hello world!');}).listen(8080);//var http = require("http");//http.createServer(function(request, response) {// console.log('request received');// response.writeHead(200, {"Content-Type": "text/plain"});// response.write("Hello World");// response.end();//}).listen(8888);//console.log('server started');
好了,然后我们在命令行打开目录,执行命令,发现没有http2这个模块–坑爹了,一怒之下直接在目录下安装http2,不在全局安装了。
目录路径不隐藏了。。。太麻烦了。
完全收不到数据–失败。换成http1的服务器看看怎么样:
执行以后:
访问:
bug检查时间:
试了网上一些代码,还有连模块作者的example我都download试了,不过还是不行,最后看到:
node http2模块
666.更改nodejs版本。
然后,请使用https协议访问。。
https://localhost:8080/
无论是spdy还是http2,都是用https访问的。。。也是醉了。
好了,接下来要用wireshark来监控一下数据
- ndoejs搭建http2.0服务器--菜鸟级教程【草稿试验版】
- 菜鸟教程 Ubuntu 11.0下搭建Web服务器
- 菜鸟零基础搭建jdk环境到搭建服务器tomcat到搭建nexus私服教程
- ionic-配置及第一个程序【草稿试验版】
- Http2.0
- HTTP2.0
- HTTP2.0
- 服务器搭建之菜鸟篇
- gitlab服务器搭建教程
- 搭建ss服务器教程
- 搭建 GIT 服务器教程
- git服务器搭建教程
- 搭建 GIT 服务器教程
- 搭建 GIT 服务器教程
- 搭建shadowsocks服务器教程
- JPA 菜鸟教程 1 环境搭建
- GIT服务器的搭建|菜鸟实践
- Kubernetes集群搭建【草稿】
- 演示StringBuffer
- win10网络配置从公用网络修改专用网络
- Android中的弹幕效果
- Java转换字符串首字母大小写
- Maven的基本操作上
- ndoejs搭建http2.0服务器--菜鸟级教程【草稿试验版】
- PWN练习之环境变量继承
- 微信公众平台开发教程(六)获取个性二维码
- 微信二维码登录原理
- 数字革命——美联邦政府先行一步颠覆管理模式
- 20160907给全志R58增加一个lunch为cb5801.txt
- Android仿iOS样式的dialog
- 判断两个矩形相交以及求出相交的区域
- ubuntu 环境下qt的安装