当接到node开发node api的时候,我就想用docker来部署,众所周知,node的版本更新迭代很快。很多以前需要babel后才能采用的方法正在不断被node 原生的支持。如果随便更换生产服务器的node版本,可能对以前的服务产生一定程度的冲击。我想用docker就是想单纯固定住node版本。关于docker的基本用法,其实网上有很多,自己不想赘述,提供链接一篇,其中我的实现基本参照于此 https://segmentfault.com/a/1190000010541792。然而想法是好的,我兴冲冲的去创建dockerhub账号,将自己的镜像上传,等着运维pull的时候,他们说他们暂时不想采用docker,理由是为了统一,据理力争不得,只能按照普通方式来部署,不过我有自己的服务器,部署到自己的服务器简直迅速又完美。之前每次源码的改动我一般都是重新构建镜像,其实每次怎么做都是很繁琐,docker container run -v /usr/src/project:/app --name server- bind-directory -p 4000:3001 -it bind-directory:0.0.1,这里的 "-v /usr/src/project:/app" 就是把宿主机的 /usr/src/project 与容器目录 app 映射起来。这样当我们代码修改后,更新项目后,就不需要再构建 image 了,依赖修改也只需要在宿主机上直接安装即可,不用构建 image,部署方便了许多。

  采用普通方式来部署,不过是执行入口文件,然后用pm2来守护这个进程,看起来还是蛮不错的。但是运行了一段时间,发现有的时候接口返回的数据好大,固定几秒如果接口的数据没有 content download 完毕,接口就会报错误,类似err_content_length_mismatch,解决方法代码层面 https://github.com/expressjs/express/issues/3392,在这期间我发现我对请求的每个时间点好像不是特别清楚,于是又发现好文章一篇 network http请求时间分析 https://www.cnblogs.com/zhenwen/p/5827925.html,其中ttfb(浏览器发送请求到服务器返回第一个字节所用的时间),还有其他的什么dns解析的时间和tcp三次握手的时间,不得不说chrome对于前端开发工程师真是太友好了。不过这些东西跟接口返回大数据的处理没有多大关系,主要原因是response 太大了,导致contentdownload时间过长。怎么才能减少接口返回的数据的大小呢,肯定是压缩,于是想到gzip.怎么才能用上gzip.我想到的是nginx,可能node存在类似的中间件来实现,但是即使存在,也不能比nginx来的成熟。

,

为了配置gzip接口采用的反向代理, 上图分别是虚拟主机和gzip的配置

可以看到response的server nginx , gzip已经开启,完美!

部署node api的二三事的更多相关文章

  1. 生产环境部署node记录(二):pm2和nginx

    安装完node和npm ,接下来安装pm2 首先简单介绍下pm2,官网的介绍是: pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进 ...

  2. 高德地图API开发二三事(一)如何判断点是否在折线上及引申思考

    最近使用高德地图 JavaScript API 开发地图应用,提炼了不少心得,故写点博文,做个系列总结一下,希望能帮助到LBS开发同胞们. 项目客户端使用高德地图 JavaScript API,主要业 ...

  3. 在云平台上基于Go语言+Google图表API提供二维码生成应用

    二维码能够说已经深深的融入了我们的生活其中.到处可见它的身影:但通常我们都是去扫二维码, 曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人. 这里就分享一下 ...

  4. 几种部署Goku API Gateway的方式,最快一分钟可使用上网关

    本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文. 什么是Goku API Gateway? Goku API Gateway (中文名:悟空 API ...

  5. 在Heroku上部署Node.js应用

    最近在学习Node.js,想找一个可以免费部署Node的平台,于是便找到了Heroku 直接进入主题,接下来我们一步一步部署自己的Node应用. 步骤1: 注册一个免费的Heroku账号. 步骤2: ...

  6. NODE编程(二)--异步编程技术

    在Node世界里流行两种响应逻辑管理方式,回调和事件监听. 回调通常用来定义一次性响应的逻辑.比如对于数据的查询,可以指定一个回调函数来确定如何处理查询结果. 事件监听器,本质上也是一个回调,不同的是 ...

  7. 部署Node.js项目(CentOS)

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...

  8. 如何线上部署node.js项目

    来源:http://blog.csdn.net/chenlinIT/article/details/73343793 前言 最近工作不是很忙,在空闲时间学习用node+express搭建自己的个人博客 ...

  9. 使用 pm2 优雅的部署 node 程序

    使用 pm2 优雅的部署 node 程序 # 启动并监控名字为 XXX 的 npm run start:dev 命令 pm2 start npm --watch --name XXX -- run s ...

随机推荐

  1. <Android 基础(十八)> XLIFF

    介绍 XLIFF ,XML Localization Interchange File Format,XML本地化数据交换格式. 实际使用 1.布局文件 activity_main.xml <? ...

  2. Mantis中的状态

    在 Mantis中的 问题状态一共有以下几种 10:new,20:feedback,30:acknowledged,40:confirmed,50:assigned,80:resolved,90:cl ...

  3. check_mk通用应用检测插件

    客户端mk_tvmapp import json filename = '/tmp/tvmapp.json' print '<<<tvmapp>>>' for a ...

  4. 开源监控zabbix的搭建

    yum-nginx-php-mysql 1.依赖安装 1.依赖 yum -y install pcre* openssl* 2.php rpm -Uvh https://mirror.webtatic ...

  5. HTML:一个form表单有两个按钮,分别提交到不同的页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Linux下实现普通用户免密登录并执行root权限

    需求:服务器的root和密码登录都禁用,只开放普通用户登录,这时需要给普通用户配置秘钥文件,实现无密码登录 需要注意的是使用什么用户,就把秘钥文件拷入到该用户的家目录下,如果是root用户,就直接拷贝 ...

  7. SQA计划和测试规程

    一.SQA计划 (一)目的 本计划的目的是定义我们该小组所做的“云医院”项目的SQA任务和职责,在项目过程中应遵循的流程.规范和约定等,以确保软件质量得到维持. (二)范围 本计划应用于“云医院”项目 ...

  8. 怎样下载YouTube播放列表视频

    YouTube上面的视频种类丰富多彩,要是你想利用上面的资源来学习的话,足够你钻研很长时间了.如果你想在YouTube上面学习一门教程,比如Python,通常这些内容一个视频肯定装不下,会分为好多个视 ...

  9. IOS Block的本质

    #import "HMViewController.h" #import "HMPerson.h" @interface HMViewController () ...

  10. 数据库-identifying 与non-identifying realtionship 区别

    MySQL Workbench 或者是 E-RWin等进行数据库建模时,通常会对数据表进行关联操作,即设置表与表之间的关系 1:1 1:n m:n,而它们具有 identifying realtion ...