Upgrading Supervisor 2 to 3 =========================== The following is true when upgrading an installation from Supervisor 2.X to Supervisor 3.X: #. 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. #. The supervisor configuration file must include the following section verbatim for the XML-RPC interface (and thus the web interface and :program:`supervisorctl`) to work properly: .. code-block:: ini [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface #. 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). #. We now allow :program:`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 :file:`supervisord.conf` file. These sections have their own options (where applicable) for ``port``, ``username``, ``password``, ``chmod``, and ``chown``. #. All supervisord command-line options related to ``http_port``, ``http_username``, ``http_password``, ``sockchmod`` and ``sockchown`` have been removed (see above point for rationale). #. 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.