我在让主管使用扩展的环境变量运行我的命令时遇到了很多麻烦。
我的主管见面。
; supervisor config file
[unix_http_server]
file=/var/run//supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
user = a-user-name
environment = HOME='/home/a-user-name',APP='staging.example.com',SYMFONY_ENVIRONMENT='staging'
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run//supervisor.sock ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf
files = /home/a-user-name/apps/staging.example.com/current/app/Resources/config/supervisor/*.conf
并且under-version-control.conf
在~/apps/staging.example.com/current/app/Resources/config/supervisor
[program:hank-message-forwarder]
stdout_logfile = /var/log/pink-tie/%(program_name)s-out.log
stderr_logfile = /var/log/pink-tie/%(program_name)s-err.log
logfile_maxbytes = 50MB
logfile_backups = 10
identifier = hank-message-forwarder
command = %(ENV_HOME)s/apps/%(ENV_APP)s/current/bin/hank forward-messages tcp://*:5500 tcp://*:5600
我在这里做错了什么?我收到的错误根本没有帮助。它抱怨无法连接到 unix 服务器,但是一旦我删除files
,user
和environment
指令(基本上我所做的所有更改)一切都会恢复正常。
答案1
但是一旦我删除
files
,user
和environment
指令(基本上我所做的所有更改)一切都会恢复正常。
听起来你的语法有问题。引用后在线文档...user
条目看起来不错。
user = a-user-name
但environment
对我来说看起来很奇怪。尝试将单引号更改为双引号。
从此改变它;
environment = HOME='/home/a-user-name',APP='staging.example.com',SYMFONY_ENVIRONMENT='staging'
对此;
environment = HOME="/home/a-user-name",APP="staging.example.com",SYMFONY_ENVIRONMENT="staging"
编辑:
我刚刚注意到你的其中一行有星号files=
。我以前从未见过在实践中(我只指定了完整的文件名)。但在线文档确实显示了通配符(“*”和“?”)。
但是,在线文档提到以下内容(重点添加);
如果配置文件包含某个
[include]
部分,则必须包含一把钥匙命名“files”
。此项中的值指定要包含在配置中的其他配置文件。
答案2
无需实际查看细节。我突然想到一个想法。您不能以另一个用户的身份运行进程,除非该用户拥有足够的权限。
所以问题是,supervisord 是以 root 身份运行还是以较低权限用户身份运行?