Supervisor Setup for Non-Root Users
Install Supervisor
sudo apt update
sudo apt install supervisor
Configure Access and Directories
# Create group supervisor
sudo groupadd supervisor
# Add user to supervisor group
sudo usermod -a -G supervisor $USER
# Set up config directories
sudo mkdir -p /etc/supervisor/conf.d
sudo chown -R root:supervisor /etc/supervisor
sudo chmod -R 775 /etc/supervisor
# Set up main supervisor config
sudo bash -c 'cat > /etc/supervisor/supervisord.conf << EOL
[unix_http_server]
file=/var/run/supervisor.sock
chmod=0770
chown=root:supervisor
[supervisord]
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
childlogdir=/var/log/supervisor
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
[include]
files = /etc/supervisor/conf.d/*.conf
EOL'
# Set log permissions
sudo chown -R root:supervisor /var/log/supervisor
sudo chmod -R 775 /var/log/supervisor
# Restart supervisor
sudo systemctl restart supervisor
Usage Example
Create program config in /etc/supervisor/conf.d/program.conf
:
[program:myapp]
command=/usr/bin/php /path/to/script.php
directory=/path/to/app
user=your_username
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/myapp.err.log
stdout_logfile=/var/log/supervisor/myapp.out.log
Control programs without sudo:
supervisorctl status
supervisorctl start myapp
supervisorctl stop myapp
supervisorctl restart myapp
Table of Contents