我有一个问题,当启动节点永远在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) 我偶尔会使用forever.js快速而脏地将CLI类型的Node.js应用程序部署到生产环境,在那里我不想进行完整的supervisord部署.
我想知道是否有PHP的等价物?目前我们有一个队列处理系统,它从SQS获取消息并将它们同步处理到数据库中(它不能完成异步,因为在这个特定的用例中会导致各种令人讨厌的行锁定问题.)目前它使用cron运行时间很短,但它经常提前结束,我希望它再次开始运行.我不能一次运行多个进程.
欢迎任何*nix命令/软件/ bash类型的想法.
我永远使用启动nodeJs服务器,然后选择日志文件:
永远-l /home/api/log/api_output.log启动server.js
我每天都使用logrotate来移动日志文件(比如这里建议:NodeJS/Forever存档日志),一天后我的目录是这样的:
-rw-r - r-- 1 root root 0 avril 18 12:00 api_output.log
-rw-r - r-- 1 root root 95492 avril 18 12:01 api_output.log-20140418
因此,循环工作正常,但日志消息现在写在api_output.log-20140418中,而不是api_output.log
也许有人可以帮助我?
我试图永远使用Amazon EC2实例运行我的nodejs应用程序.我安装了nodejs npm,然后运行sudo npm install forever -g
.
安装没有返回任何错误,所以我继续尝试运行我的应用程序forever start server.js
,但它不会做任何事情 - 没有输出什么,甚至没有错误.
我也试过forever --help
,只是forever
,但没有人给我任何回应...
当使用nodejs定期运行我的应用程序时 - nodejs init.js
它按预期工作,但我需要让它运行使用,forever
因此当我从服务器断开连接时它不会关闭.
编辑:
因为我唯一的问题是当我关闭终端会话到我的EC2服务器时nodejs正在关闭,我通过使用这样的linux nohup
命令解决了这个问题:
nohup sudo nodejs server.js &
这使得nodejs在子进程中运行,即使我关闭了终端窗口.
谢谢你的帮助!:)
我在aws上部署了两个node.js应用程序,这两个应用程序位于显示为的路径中
/home/ubuntu/nodes/app1/app.js
/home/ubuntu/nodes/app2/app.js
Run Code Online (Sandbox Code Playgroud)
分别
为了在后台运行node.js应用程序,我永远用它来启动两个应用程序,就像这样
$ sudo forever start /home/ubuntu/nodes/app1/app.js
$ sudo forever start /home/ubuntu/nodes/app2/app.js
Run Code Online (Sandbox Code Playgroud)
所以通过在后台进程中运行两个node.js应用程序永远运行良好.但是,当我试图用这样的永远命令停止一个进程时.
$ sudo forever stop /home/ubuntu/nodes/app1/app.js
Run Code Online (Sandbox Code Playgroud)
出乎意料的是,node.js进程都关闭了这样的信息
info: Forever stopped process:
data: uid command script forever pid logfile uptime
[0] r2pZ /usr/bin/nodejs app.js 24852 24854 /root/.forever/r2pZ.log 0:0:1:14.775
[1] 9f2h /usr/bin/nodejs app.js 24870 24872 /root/.forever/9f2h.log 0:0:0:58.733
Run Code Online (Sandbox Code Playgroud)
我假设这是因为两个node.js进程具有相同的名称 - app.js,如何通过仅关闭一个进程来避免这种情况
我期待守护我的Node.js应用程序.新贵和永远之间的区别是什么?另外,还有其他我想考虑看的套餐吗?
我安装了node.js和forever.js,当我在终端上运行它们(在Ubuntu 14.04上进行bash)时,没有任何反应.
所以,它看起来像:
#node
#
Run Code Online (Sandbox Code Playgroud)
要么
#forever
#forever --help
#forever listall
#
Run Code Online (Sandbox Code Playgroud)
其他不与节点相关的东西运行正常.
我有一个节点应用程序作为服务器上的守护进程永远运行.在其中一次更新后,我试图阻止它(稍后重启).但令我惊讶的forever stopall
是,没有做任何事情No forever processes running
.Forever list
已经返回相同.这两个命令我也试过sudo.
问题是,我可以清楚地看到节点仍在运行(我的应用程序工作正常).知道什么是错的吗?
PS我需要尽快滚动更新,所以我只是重新启动服务器.但我仍然对这种情况感到好奇.
打字后PSS ps aux | grep app.js
ubuntu 1320 0.0 2.2 663040 23232 ? Ssl Sep12 0:00 /usr/bin/nodejs /usr/lib/node_modules/forever/bin/monitor node_app/app.js
ubuntu 1322 0.0 6.9 992564 70792 ? Sl Sep12 0:31 /usr/bin/nodejs /var/www/node_app/app.js
root 9739 0.0 0.0 10468 936 pts/0 S+ 11:09 0:00 grep --color=auto app.js
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我在amazon aws上运行节点app.js.
在免费的Amazon EC2实例上,我设置了一个在express上运行的简单node.js Hello World应用程序.
如果我运行npm start
,我的应用运行正常,我可以从我的浏览器点击它,我看到以下输出:
> myappname@0.0.0 start /home/ec2-user/app
> node ./bin/www
Run Code Online (Sandbox Code Playgroud)
我在全球范围内安装了永久工具.当我跑步时forever start app.js
,我看到:
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: app/app.js
Run Code Online (Sandbox Code Playgroud)
但是,当我检查时forever list
,我发现该进程已停止:
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] 2v0J /usr/local/bin/node app.js 2455 2457 /home/ec2-user/.forever/2v0J.log STOPPED
Run Code Online (Sandbox Code Playgroud)
这是日志中唯一的消息: error: Forever detected …
我安装永远模块中我的Ubuntu服务器超级用户使用全球NPM.但我无法使用此方法启动我的nodeJs Appliation.我在终端中键入"forever",但似乎没有执行任何命令.我肯定在"永远"安装时我没有遇到任何错误.请参阅以下输出.我在我的本地机器上尝试过相同的操作.但它运作正常.我正在使用Express 4.
永远在ubuntu服务器: -
永远在我的本地机器输出如下: -
有什么服务器设置我需要它来工作吗?