Upgrading Supervisor 2 to 3

The following is true when upgrading an installation from Supervisor 2.X to Supervisor 3.X:

  1. In [program:x] sections, the keys logfile, logfile_backups, logfile_maxbytes, log_stderr and log_stdout are no longer valid. Supervisor2 logged both stderr and stdout to a single log file. Supervisor 3 logs stderr and stdout to separate log files. You’ll need to rename logfile to stdout_logfile, logfile_backups to stdout_logfile_backups, and logfile_maxbytes to stdout_logfile_maxbytes at the very least to preserve your configuration. If you created program sections where log_stderr was true, to preserve the behavior of sending stderr output to the stdout log, use the redirect_stderr boolean in the program section instead.

  2. The supervisor configuration file must include the following section verbatim for the XML-RPC interface (and thus the web interface and supervisorctl) to work properly:

    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    
  3. The semantics of the autorestart parameter within [program:x] sections has changed. This parameter used to accept only true or false. It now accepts an additional value, unexpected, which indicates that the process should restart from the EXITED state only if its exit code does not match any of those represented by the exitcode parameter in the process’ configuration (implying a process crash). In addition, the default for autorestart is now unexpected (it used to be true, which meant restart unconditionally).

  4. We now allow supervisord to listen on both a UNIX domain socket and an inet socket instead of making listening on one mutually exclusive with listening on the other. As a result, the options http_port, http_username, http_password, sockchmod and sockchown are no longer part of the [supervisord] section configuration. These have been supplanted by two other sections: [unix_http_server] and [inet_http_server]. You’ll need to insert one or the other (depending on whether you want to listen on a UNIX domain socket or a TCP socket respectively) or both into your supervisord.conf file. These sections have their own options (where applicable) for port, username, password, chmod, and chown.

  5. All supervisord command-line options related to http_port, http_username, http_password, sockchmod and sockchown have been removed (see above point for rationale).

  6. The option that used to be sockchown within the [supervisord] section (and is now named chown within the [unix_http_server] section) used to accept a dot-separated (user.group) value. The separator now must be a colon, e.g. user:group. Unices allow for dots in usernames, so this change is a bugfix.