Running django custom management commands with supervisord

The source command is only available in bash, and the supervisor command is run by sh. I would recommend using a script to perform your commands:

/etc/supervisor/conf.d/my_app.conf

[program:my_app]
command = bash /path/to/app/init.sh
directory = /path/to/app/
user = ubuntu
autostart=true
autorestart=true

/path/to/app/init.sh

#!/bin/bash

beanstalkd -l 127.0.0.1 -p 11300
source /home/mf/virtualenvs/env/bin/activate    
python manage.py command1
python manage.py command2

The only problem is that supervisor will only have control of the script, not the command(s). If you have a situation where you want supervisor to manage and keep alive a specific process, I would recommend using exec in your bash init file, that way supervisor will have control of your process. E.g.

/path/to/app/init.sh

#!/bin/bash

exec beanstalkd -l 127.0.0.1 -p 11300

You may find this useful: http://sjsnyder.com/managing-virtualenv-apps-with-supervisor