使用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中利用Promise来封装异步函数
Feb 25 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 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
php 操作excel文件的方法小结
2009/12/31 PHP
php发送post请求的三种方法
2014/02/11 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
vue实现div拖拽互换位置
2020/07/29 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
实例说明Python中比较运算符的使用
2015/05/13 Python
Python中的集合类型知识讲解
2015/08/19 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python 批量修改/替换数据的实例
2018/07/25 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
wxpython绘制圆角窗体
2019/11/18 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python 求10个数的平均数实例
2019/12/16 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
运动会获奖感言
2014/02/11 职场文书
淘宝客服工作职责
2014/07/11 职场文书
2014年大学班级工作总结
2014/11/14 职场文书