I'm having a lot of trouble making supervisor running my commands with expanded environment variables.

My supervisor conf.

; supervisor config file

file=/var/run//supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

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
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

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.

files = /etc/supervisor/conf.d/*.conf
files = /home/a-user-name/apps/staging.example.com/current/app/Resources/config/supervisor/*.conf

And under-version-control.conf in ~/apps/staging.example.com/current/app/Resources/config/supervisor

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

What am I doing wrong here? The error I'm getting is not helpful at all. It's complaining about the fact that it can't connect to the unix server but once I remove the files, user and environment directive (all that I've changed basically) all goes back to normal.


2 Answers 2


but once I remove the files, user and environment directive (all that I've changed basically) all goes back to normal.

Sounds like you have a syntax problem. After referencing the online documentation... The user entry looks good. user = a-user-name But the environment looks odd to me. Try changing your single-quotes to double-quotes.

Change it from this;

environment = HOME='/home/a-user-name',APP='staging.example.com',SYMFONY_ENVIRONMENT='staging'

To this;

environment = HOME="/home/a-user-name",APP="staging.example.com",SYMFONY_ENVIRONMENT="staging"


I just noticed you have an asteriks in one of your "files=" lines. This I haven't seen before in practice (I've only specified complete filenames). But the online documentation does show wildcards ("*" and "?").

However, the Online documentation mentions the following (emphasis added);

If the configuration file contains an [include] section, it must contain a single key named “files”. The values in this key specify other configuration files to be included within the configuration.

  • Unfortunately that doesn't help. I'm still encountering the same issues. Aug 27, 2013 at 7:09
  • Not sure if this should be a comment, or an edit to my answer - But I just noticed that one of your "files=" variables has an asterisk (*). I've only seen whole files listed there before.
    – Signal15
    Aug 27, 2013 at 14:11
  • thanks for the tip. I'm not sure that is the reason but I'll definitely investigate. Aug 28, 2013 at 9:42

Without actually looking in detail. One thought came to mind. You can't run a process as another user unless that user has sufficient privileges to do so.

So the question is to you, is supervisord running as root or as a lower privilege user?


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .