使用forever让node.js持久运行

nodejs一般是当成一条命令执行的,当用户断开session,nodejs也就停止了运行。如何让nodejs持续在后台运行呢?

#最简单粗暴的方法是使用Linux本身后台执行的特性


使用&符号后台执行,并利用nohup命令实现进程禁止挂起

nohup node app.js &

#使用forever让node.js持久运行


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
npm install forever -g   #安装
forever start app.js #启动应用
forever stop app.js #关闭应用
forever restartall #重启所有应用

#输出日志和错误
forever start -l forever.log -o out.log -e err.log app.js

# 指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log
forever start -l forever.log app.js

# 指定app.js中的日志信息和错误日志输出文件,
# -o 就是console.log输出的信息,-e 就是console.error输出的信息
forever start -o out.log -e err.log app.js

# 追加日志,forever默认是不能覆盖上次的启动日志,
# 所以如果第二次启动不加-a,则会不让运行
forever start -l forever.log -a app.js

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

# 显示所有运行的服务
forever list

######停止操作

# 停止所有运行的node App
forever stopall

# 停止其中一个node App
forever stop app.js

# 当然还可以这样
# forever list 找到对应的id,然后:
forever stop [id]

# 开发环境下
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辨认当前是什么环境用的

The End