Install Supervisor Gunicorn Virtualenv Django in Debian

Install Supervisor:

using pip

pip install supervisor

or apt-get

sudo apt-get install supervisor

Add your project configuration file in the directory supervisor use at startup

Supposing you have a gunicorn conf file already written gunicorn.conf.py, like this for example:

bind = "0.0.0.0:8001"
logfile = "/home/user/app/gunicorn.log"
workers = 3

write your supervisor file configuration:

sudo vi /etc/supervisor/conf.d/mysite.conf
command=/home/user/.virtualenvs/ENV/bin/gunicorn_django -c /home/user/app/gunicorn.conf.py
directory=/home/user/app/
user=user
autostart=true
autorestart=true
priority=991
stopsignal=KILL

If you get a UnicodeEncodeError

Add this environment line

environment=LANG=en_CA.UTF-8,LC_ALL=en_CA.UTF-8,LC_LANG=en_CA.UTF-8

in the [supervisord] section of

/etc/supervisor/supervisord.conf

to avoid this error

django set 'LC_ALL' to a correct value, eg: 'en_US.UTF-8'.

If you’re taking advantage of the internationalization features of Django (see Internationalization and localization) and you intend to allow users to upload files, you must ensure that the environment used to start Apache is configured to accept non-ASCII file names. If your environment is not correctly configured, you will trigger UnicodeEncodeError exceptions when calling functions like os.path() on filenames that contain non-ASCII characters.

To avoid these problems, the environment used to start Apache should contain settings analogous to the following:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

Consult the documentation for your operating system for the appropriate syntax and location to put these configuration items; /etc/apache2/envvars is a common location on Unix platforms. Once you have added these statements to your environment, restart Apache.

sudo /etc/inid.d/apache2 restart
sudo /etc/init.d/supervisor stop
sudo /etc/init.d/supervisor start

to test your configuration

sudo supervisorctl update

this could be enough, to stop your app

sudo supervisorctl stop mysite

to start it manually again

sudo supervisorctl start