我正在尝试使用forever命令运行节点服务器.我使用以下方式全球安装:
npm install forever -g
Run Code Online (Sandbox Code Playgroud)
永远安装后,我尝试使用以下命令运行我的节点脚本:
node_modules\.bin\forever start app.js
Run Code Online (Sandbox Code Playgroud)
以下是我的控制台:
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up f
or at least 1000ms
info: Forever processing file: app.js
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题!
当我开始与我的应用程序的NodeJS PM2,其他服务器的用户都无法访问该进程.
即使我从自定义目录(不是当前用户~/,默认情况下pm2正在使用)启动pm2 :
HOME=/var/www pm2 start app.js
Run Code Online (Sandbox Code Playgroud)
任何用户都可以访问目录(与之相比~/,但是其他服务器用户仍然无法访问该进程.
当其他服务器用户这样做时pm2 list,它会显示0正在运行的进程 - 但是有(由另一个用户启动).当其他用户尝试时HOME=/var/www pm2 list,CLI会抛出错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect EACCES
at errnoException (net.js:905:11)
at Object.afterConnect [as oncomplete] (net.js:896:19)
Run Code Online (Sandbox Code Playgroud)
所以我想知道如何确保用户能够访问其他服务器用户运行的pm2进程?或者它应该以不同的方式接近?
我想知道为什么每个服务器用户都能够git pull从Git存储库部署最新的源代码,但pm2之后无法重启进程?只有启动pm2进程的用户才能重启...很奇怪.
我正在尝试为node.js运行forever函数,但是我得到了警告;
C:\serv>forever start SERVER.js
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up f
or at least 1000ms
info: Forever processing file: SERVER.js
Run Code Online (Sandbox Code Playgroud)
如何设置--minUptime和--spinSleepTime删除这些警告
安装forever包npm install forever -g
所以我永远使用nodejs来保持我的服务器.我需要传递一些v8选项.我可以通过nodejs命令行来做到这一点,但我怎么能永远这样做呢?
我正在使用永远运行我的节点应用程序.当我永远开始时,我指定在哪里写日志.我还指定附加到日志.这里的问题是我的日志将在几个月的过程中失去控制.
有没有办法在一个时间间隔内存档/滚动日志,即每天滚动/存档日志文件中的内容到另一个文件(即server-2013-3-5.log).这样我就可以根据需要删除/移除旧的日志文件.
我刚刚开始考虑使用Winston作为我的记录器,我没有遇到任何有用的东西.
有任何想法吗?
我有一个NodeJS应用程序,它设置一个UNIX套接字来公开一些进程间通信通道(某种监视的东西).UNIX套接字文件放在os.tmpdir()文件夹中(即/tmp/app-monitor.sock).
var net = require('net');
var server = net.createServer(...);
server.listen('/tmp/app-monitor.sock', ...);
Run Code Online (Sandbox Code Playgroud)
我使用信号处理(SIGINT,SITERM等...)来正常关闭我的服务器并删除套接字文件.
function shutdown() {
server.close(); // socket file is automatically removed here
process.exit();
}
process.on('SIGINT', shutdown);
// and so on
Run Code Online (Sandbox Code Playgroud)
我的应用程序正在运行forever start ...以监视它的生命周期.
我的forever restartall命令有问题.当永远这样做时restartall,使用a SIGKILL来终止所有子进程.SIGKILL无法通过进程处理,因此我的应用程序在没有任何关闭过程的情况下死亡
问题是套接字文件在SIGKILL使用时不会被删除.重新启动子进程后,无法启动新服务器导致' listen调用将导致EADDRINUSE错误.
我无法在应用启动过程中删除现有的套接字文件导致'我不知道它是真正的工作套接字还是先前不干净关闭的痕迹.
所以,问题是......处理这种情况的更好方法是什么(SIGKILL和UNIX-socket服务器)?
两个问题:
你如何使用Forever运行Express 4应用程序?(或者是否有新包装?)
我正在使用包管理器在本地安装Forever运行我的Express 3应用程序.我使用命令:
forever -a start app.js
Run Code Online (Sandbox Code Playgroud) 当脚本与forever模块一起运行并且您"永远列出"时,您将获得一个包含所有当前运行脚本的文件名的列表.在这种情况下,"myscript1.js"
[0] j2mo /usr/local/bin/node myscript1.js 51004 51005 /Users/me/.forever/j2mo.log 0:14:10:51.420
[1] Vav3 /usr/local/bin/node myscript1.js 51011 51012 /Users/me/.forever/Vav3.log 0:14:10:21.221
Run Code Online (Sandbox Code Playgroud)
有没有办法获得所有正在运行的脚本的路径?
我有一个问题,当启动节点永远在docker容器中,如果我手动启动工作,而不是相同的命令在Dockerfile中,当构建并启动容器时,退出.该命令在bash中有效:
docker run -it container_name bash forever start -c 'node --harmony' /my/path/app.js
Run Code Online (Sandbox Code Playgroud)
我试图将命令放在Dockerfile中,但容器没有启动
CMD forever start -c 'node --harmony' /my/path/app.js
Run Code Online (Sandbox Code Playgroud)