我正在尝试设置supervisor.conf
。我的一个应用程序需要node.js,但系统未安装节点。此外,因为它需要绑定到端口80,所以它需要以root身份运行。如何修改PATH
变量,以便supervisord可以找到node
可执行文件(位于目录中)并运行node.js应用程序。
我正在尝试这样做
[supervisord]
environment=PATH=/path/to/where/node/executable/is
[program:web]
command=node web.js -c config.json
失败
2011-08-25 16:49:29,494 INFO spawnerr: can't find command 'node'
答案 0 :(得分:12)
您可以使用env:
在命令中添加它[program:web]
command=env PATH="/path/to/where/node/executable/is" node web.js -c config.json
在某些情况下,环境似乎无效。
答案 1 :(得分:5)
我开始使用supervisor(类似于zenbeni)的模式是使用shell脚本启动我正在运行的任何程序,它允许设置环境变量等。
e.g。
#!/bin/sh
export EXAMPLE_VARIABLE=something
export PYTHONPATH=/something
export PATH=$PATH:/somewhere/else
exec python somescript.py
'exec'的使用很重要。它将/ bin / sh替换为正在执行的程序,而不是将其作为子项生成。这意味着周围没有任何其他过程,并且信号也按预期工作。
这比zenbeni方法的(小)优势在于,当更新环境变量等时,它只需要重新启动管理程序,即不需要重新读取/更新等。如果您遇到与我相同的错误(完全重启主管以更新事件监听器环境变量),则在使用事件监听器时,此优势会变得更大。
答案 2 :(得分:-2)
您只需设置命令的绝对路径:
[program:web]
command=/path/to/where/node/executable/is/node web.js -c config.json