启动时使用Meteor settings.json的主管

启动时使用Meteor settings.json的主管,meteor,supervisord,Meteor,Supervisord,如何通过主管将一个设置json文件传递给meteor? 如果我从home命令运行meteor run命令,一切都很完美: meteor --settings settings.json 这是我当前的conf.d文件: 这会产生以下错误: Errors prevented isopacket load: While loading isopacket `constraint-solver`: packages/meteor.js:59:11: METEOR_SETTINGS are not v

如何通过主管将一个设置json文件传递给meteor? 如果我从home命令运行meteor run命令,一切都很完美:

meteor --settings settings.json
这是我当前的conf.d文件:

这会产生以下错误:

Errors prevented isopacket load:

While loading isopacket `constraint-solver`:
packages/meteor.js:59:11: METEOR_SETTINGS are not valid JSON:
/home/username/demo/settings.json
at packages/meteor.js:59:11
at packages/meteor.js:80:4
at packages/meteor.js:1380:3
settings.json


我很惊讶没有人回答这个问题。我在google上找到了你的问题,当时我正试图找出如何将settings.json文件放入METEOR_设置中,并避免supervisor配置中的语法错误

因为要回答您的问题,METEOR_设置环境变量必须包含JSON。因此,它必须包含settings.JSON的JSON数据,而不是文件名或路径

这有点愚蠢,因为您正在将JSON数据放入环境变量中。所以基本上METEOR_SETTINGS=$cat SETTINGS.json | tr-d'\n',但这样做会导致supervisord出现问题,因为这种语法显然不受支持

"error: <class 'xmlrpclib.Fault'>, <Fault 92: 'CANT_REREAD: Unexpected end of key/value pairs'>: file: /usr/lib64/python2.7/xmlrpclib.py line: 794"]
例如,创建一个shell脚本

#!/usr/bin/env bash

export METEOR_SETTINGS="$(cat {{pwfrank_home}}/pwfrank/{{pwfrank_settings_file}} | tr -d '\n')"                                              

/usr/local/bin/meteor node main.js    
这对我来说很管用,但我正从主管转移到systemd,因为systemd有环境文件,所以我不必使用shell脚本来包装节点


为未来的谷歌编辑:我最终意识到,只要将json数据放在单引号之间,systemd就可以正常工作。就我个人而言,我是通过ansible来完成这项工作的,使用上面提到的cat | tr命令提取JSON数据,将其放入ansible事实中,然后使用systemd中Meteor服务单元的my Environment file模板中的事实。

您可以发布设置文件并删除其中的任何敏感信息,以便我们可以看到它是有效的JSON吗?完成。但正如我所说,手动运行它很好
"error: <class 'xmlrpclib.Fault'>, <Fault 92: 'CANT_REREAD: Unexpected end of key/value pairs'>: file: /usr/lib64/python2.7/xmlrpclib.py line: 794"]
[program:pwfrank]                                                                                                                            
directory={{pwfrank_home}}/build/bundle                                                                                                      
command={{pwfrank_home}}/start_node.sh 
environment=                                                                                                                                 
  HOME="{{pwfrank_home}}",                                                                                                                   
  MONGO_URL="{{pwfrank_mongo_url}}",                                                                                                         
  PORT="{{pwfrank_listenport}}",                                                                                                             
  ROOT_URL="{{pwfrank_baseurl}}"                                                                                                             
#!/usr/bin/env bash

export METEOR_SETTINGS="$(cat {{pwfrank_home}}/pwfrank/{{pwfrank_settings_file}} | tr -d '\n')"                                              

/usr/local/bin/meteor node main.js