使用forever管理nodejs应用教程


Posted in NodeJs onJune 03, 2014

何为forever

forever可以看做是一个nodejs的守护进程,能够启动,停止,重启我们的app应用。
官方的说明是说:

A simple CLI tool for ensuring that a given script runs continuously (i.e. forever).
// 一个用来持续(或者说永远)运行一个给定脚本的简单的命令行工具

Github地址:https://github.com/nodejitsu/forever

forever用途

forever的用途就是帮我们更好的管理我们node App服务,本质上就是在forever进程之下,创建一个node app的子进程。
比如,你有一个基于express的或者其他的一些个应用那么,它将会很方便你更新和操作你的服务,并且保证你服务能持续运行。
更好的一点就是每次更改文件,它都可以帮你自动重启服务而不需要手动重启。

安装forever

// 记得加-g,forever要求安装到全局环境下
sudo npm install forever -g

forever使用说明

启动相关

// 1. 简单的启动
forever start app.js
// 2. 指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log
forever start -l forever.log app.js
// 3. 指定app.js中的日志信息和错误日志输出文件,
//  -o 就是console.log输出的信息,-e 就是console.error输出的信息
forever start -o out.log -e err.log app.js
// 4. 追加日志,forever默认是不能覆盖上次的启动日志,
//  所以如果第二次启动不加-a,则会不让运行
forever start -l forever.log -a app.js
// 5. 监听当前文件夹下的所有文件改动
forever start -w app.js

文件改动监听并自动重启

// 1. 监听当前文件夹下的所有文件改动(不太建议这样)
forever start -w app.js

显示所有运行的服务
forever list

停止操作
// 1. 停止所有运行的node App
forever stopall
// 2. 停止其中一个node App
forever stop app.js
// 当然还可以这样
// forever list 找到对应的id,然后:
forever stop [id]

重启操作

重启操作跟停止操作保持一致。

// 1. 启动所有
forever restartall

开发和线上建议配置

// 开发环境下
NODE_ENV=development forever start -l forever.log -e err.log -a app.js
// 线上环境下
NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js

上面加上NODE_ENV为了让app.js辨认当前是什么环境用的。不加它可能就不知道哦?

一些注意点

有可能你需要使用unix下的crontab(定时任务)
这个时候需要注意配置好环境变量。

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NodeJs 相关文章推荐
将nodejs打包工具整合到鼠标右键的方法
May 11 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
配置nodejs环境的方法
May 13 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
NodeJS实现一个聊天室功能
Nov 25 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 NodeJs
使用upstart把nodejs应用封装为系统服务实例
Jun 01 #NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 #NodeJs
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 #NodeJs
Nodejs进程管理模块forever详解
Jun 01 #NodeJs
NodeJS Express框架中处理404页面一个方式
May 28 #NodeJs
跟我学Nodejs(三)--- Node.js模块
May 25 #NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 #NodeJs
You might like
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
python如何基于redis实现ip代理池
2020/01/17 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
详解python程序中的多任务
2020/09/16 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
偷看我的初中毕业鉴定
2014/01/29 职场文书
2014年小学植树节活动方案
2014/03/02 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书