将程序以守护进程的方式启动:fork、screen。
ps、find等命令的使用。
Linux 下 node.js 应用、mongodb 的启动。
现象vps上运行着一个使用 nginx 反向代理、由 node.js + mongodb 驱动的博客。某天打开它时,出现 502 Bad Gateway 错误。
检测错误原因连接到 vps,执行命令
ps -ef | grep node打印信息
root 13453 12179 0 13:20 pts/0 00:00:00 grep node说明 node.js 没有运行。
执行命令
ps -ef | grep mongodb说明 mongodb 也没有运行。PHP 驱动的博客在存储数据的时候,也使用了 mongodb,昨天发布文章时,已经捕捉到 mongodb 不能连接的错误。
启动mongodb /usr/local/mongodb-linux-i686-3.2.9/bin/mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1 --logpath=/mongodbData/log/mongodb.log --logappend --fork打印信息
about to fork child process, waiting until server is ready for connections. forked process: 13984 child process started successfully, parent exiting检测 mongodb 是否启动
ps -ef | grep mongodb打印信息
root 13984 1 0 13:30 ? 00:00:00 /usr/local/mongodb-linux-i686-3.2.9/bin/mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1 --logpath=/mongodbData/log/mongodb.log --logappend --fork root 14102 12179 0 13:32 pts/0 00:00:00 grep mongodbmongodb 已经启动。
启动node.js首先创建screen
screen -S "DEBUG=node-blog:* npm start"执行此命令后,切换到一个被清屏的命令行窗口。
执行启动node应用的命令
DEBUG=node-blog:* npm start打印出错误信息
npm ERR! Linux 2.6.18-348.4.1.el5xen npm ERR! argv "/usr/local/node/node-v4.5.0-linux-x86/bin/node" "/usr/local/node/node-v4.5.0-linux-x86/bin/npm" "start" npm ERR! node v4.5.0 npm ERR! npm v2.15.9 npm ERR! path /root/package.json npm ERR! code ENOENT npm ERR! errno -2 npm ERR! syscall open npm ERR! enoent ENOENT: no such file or directory, open '/root/package.json' npm ERR! enoent This is most likely not a problem with npm itself npm ERR! enoent and is related to npm not being able to find a file. npm ERR! enoent npm ERR! Please include the following file with any support request: npm ERR! /root/npm-debug.log进入到 node.js 驱动的博客目录后,再启动该博客程序
DEBUG=node-blog:* npm start打印信息
> my-blog@0.0.0 start /usr/local/node_site/node-blog > node ./bin/wwwnode.js 博客已经成功启动。关闭命令行窗口,该博客仍然能够正常访问。这说明,使用 screen 成功到达了目的。