Emi*_*nov 9 python shell environment-variables supervisord
我正在尝试设置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
Run Code Online (Sandbox Code Playgroud)
这失败了
2011-08-25 16:49:29,494 INFO spawnerr: can't find command 'node'
Run Code Online (Sandbox Code Playgroud)
zen*_*eni 12
您可以使用env在命令中添加它:
[program:web]
command=env PATH="/path/to/where/node/executable/is" node web.js -c config.json
Run Code Online (Sandbox Code Playgroud)
似乎环境在某些情况下不起作用.
小智 5
我开始使用supervisor(类似于zenbeni)的模式是使用shell脚本启动我正在运行的任何程序,允许设置环境变量等.
例如
#!/bin/sh
export EXAMPLE_VARIABLE=something
export PYTHONPATH=/something
export PATH=$PATH:/somewhere/else
exec python somescript.py
Run Code Online (Sandbox Code Playgroud)
使用'exec'很重要.它将/ bin/sh替换为正在执行的程序,而不是将其作为子项生成.这意味着周围没有任何其他过程,并且信号也按预期工作.
这比zenbeni方法的(小)优势在于,当更新环境变量等时,它只需要重新启动管理程序,即不需要重新读取/更新等.如果您遇到与我相同的错误(完全重启主管以更新事件监听器环境变量),则在使用事件监听器时,此优势会变得更大.
jte*_*ace -1
您只需设置命令的绝对路径即可:
[program:web]
command=/path/to/where/node/executable/is/node web.js -c config.json
Run Code Online (Sandbox Code Playgroud)