部署node程序并维持正常运行时间
12.2部署的基础知识
假定你创建了一个想要展示的Web程序,或者创建了一个商业应用,在把它放到生产环境中
之前需要测试一下。你很可能会从一个简单的部署开始,然后再做些工作让它的正常运行时间和
性能达到最优。本节会带着你经历一次简单、临时的Git部署,并教你如何用Forever把程序跑起
来。临时性部署在重启后会丢失,但它们的优势是设置起来很迅速。
12.2.1 从Git存储库部署
我们快速过一下使用Git存储库的基本部署,让你对主要步骤有个直观的认识。
大多数部署都需要完成下面这些步骤:
(1) 用SSH连接到服务器上;
(2) 如果需要的话,在服务器上安装Node和版本控制工具(比如Git和Subversion) ;
(3) 从版本控制存储库中下载程序文件,包括Node脚本、图片和CSS样式表,放到服务器上;
(4) 启动程序。
这里有个例子,用Git下载完程序文件后启动它:
像PHP一样,Node也不是后台任务。因此我们列出来的这个基本部署不能断开 SSH连接。SSH
连接一旦断开,程序就会终止。不过用一个简单的工具就可以轻松地让程序保持运行状态。
自动部署 有几种可以自动部署Node 程序的办法。其中一种是使用Fleet
(https://github.com/substack/fleet)这样的工具,可以用git push部署到一或多个服务器
上。更传统的方式是用Capistrano, Evan Tahler的博客 Bricolage上发表了一篇详细介绍
文章“用Capistrano部署node.js程序”(http://mng.bz/3K9H)。
12.2.2 让Node保持运行
比如说你用Cloud9 Nog博客程序(https://github.com/c9/nog)创建了一个个人博客,现在你
想要部署它,并要确保在你断开SSH连接后它仍能运行。
在Node社区中,针对这个问题最常用的处理工具是Nodejitsu的Forever(https://github.com/
nodejitsu/forever)。它能在你断开SSH连接后让程序保持运行状态,在程序崩溃退出后还能重启它。
图12-3是Forever工作机制的概念图。

你可以用sudo命令做Forever的全局安装。
SUDO命令 在做npm模块的全局安装时(带-g选项),经常需要在npm命令前面
加上sudo(www.sudo.ws/),以超级管理员的权限运行npm命令。在你第一次使用sudo
命令时,系统会提示你输入密码。然后再运行跟在sudo后面的命令。
如果你一直跟着我们,现在用下面的命令安装Forever:
sudo npm install -g forever
Forever装好之后,你可以用下面这条命令启动你的博客,并让它一直运行下去:
forever start server.js
如果出于某些原因你想停止这个博客,可以用Forever的stop命令:
forever stop server.js
使用Forever时,你可以用它的list命令获取它所管理的程序清单:
forever list
Forever还有一个比较实用的功能,当有源码文件发生变化时,可以让它重启程序。这样每次
添加新特性或修订bug时,你就不用再手动重启了。
要在这种模式下启动Forever,请用-w选项:
forever -w start server.js
尽管Forever在程序部署上是一个极其实用的工具,但你可能想要一些功能更完备的东西做长
期部署。下一节我们会看一些工业级强度的监测方案,并看看如何让程序的性能达到最优。
部署node程序并维持正常运行时间的更多相关文章
- 使用 pm2 优雅的部署 node 程序
使用 pm2 优雅的部署 node 程序 # 启动并监控名字为 XXX 的 npm run start:dev 命令 pm2 start npm --watch --name XXX -- run s ...
- 一种简单的生产环境部署Node.js程序方法
最近在部署Node.js程序时,写了段简单的脚本,发觉还挺简单的,忍不住想与大家分享. 配置文件 首先,本地测试环境和生产环境的数据库连接这些配置信息是不一样的,需要将其分开为两个文件存储 到conf ...
- 在Heroku上部署Node.js应用
最近在学习Node.js,想找一个可以免费部署Node的平台,于是便找到了Heroku 直接进入主题,接下来我们一步一步部署自己的Node应用. 步骤1: 注册一个免费的Heroku账号. 步骤2: ...
- 部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- 阿里云部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- Java核心技术卷一基础知识-第10章-部署应用程序和applet-读书笔记
第10章 部署应用程序和applet 本章内容: * JAR文件 * Java Web Start * applet * 应用程序首选项存储 10.1 JAR文件 一个JAR文件既可以包含类文件,也可 ...
- 【转载】在Centos系统上采用二进制文件部署Node.js环境
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- Nodejs实战 —— 测试 Node 程序
读 <node.js实战2.0>,进行学习记录总结. 当当网购买链接 豆瓣网1.0链接 测试 Node 程序 本章内容 用 Node 的 assert 模块测试 使用其他断言库 使用 No ...
- 使用pm2自动化部署node项目
1.pm2简介 pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡 ...
随机推荐
- IBM AppScan 安全扫描:加密会话(SSL)Cookie 中缺少 Secure 属性 处理办法 分类: 数据安全 2014-06-28 11:35 2805人阅读 评论(0) 收藏
问题描述: 原因分析: 服务器开启了Https时,cookie的Secure属性应设为true: 解决办法: 1.服务器配置Https SSL方式,参考:https://support.micro ...
- IOS 100 - 1 开工闲聊
1 前言 现在的行情,作为码农,ios 普遍比c# 的待遇好上不少.感觉就如清洁工人,扫厕所干的再高效和干净,一个月就那么点微薄的收入.当然你可以选择去香港打扫卫生间,那里的行情据说清洁工也破万了.说 ...
- PHP json数据格式化方法
php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...
- linux内核的组成,王明学learn
linux内核的组成 一.linux内核源代码目录结构 arch: 包含和硬件体系结构相关的代码, 每种平台占一个相应的目录, 如 i386.ARM.PowerPC.MIPS 等. block:块设备 ...
- HDU 5919 Sequence II 主席树
Sequence II Problem Description Mr. Frog has an integer sequence of length n, which can be denoted ...
- 通信原理实践(二)——幅度调制
一.幅度调制,并画出时域和频域波形 1.代码如下: function [ p_n ] = AM_func( N,fs,fm,Am,fc,Ac,Ma ) %UNTITLED 此处显示有关此函数的摘要 % ...
- CF735C 数论\平衡树叶子节点的最大深度\贪心\斐波那契\条件归一化
http://codeforces.com/problemset/problem/735/C 题意..采用淘汰赛制..只要打输就退出比赛..而且只有两个选手打过的场数 相差不超过1才能比赛..最后问你 ...
- Redis主从自动failover
Redis主从架构持久化存在一个问题,即前次测试的结论,持久化需要配置在主实例上才能跨越实例保证数据不丢失,这样以来主实例在持久化数据到硬 盘的过程中,势必会造成磁盘的I/O等待,经过实际测试,这个持 ...
- DOM、Window对象操作
一.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 一.基本语法: 数据类型(字符串,小数,整数,布尔,时间) var, v ...
- 【MyEcplise SVN】myEcplise上安装SVN的多种方式
第一种:SVN的在线安装 1.打开MyEclipse,找到顶部菜单栏 Help(帮助)-Install from Site-(从网站安装),如下图 2. 然后: 点击Install from Site ...