How to use environment variables with supervisor, gunicorn and django (1.6)

OK, I guess I got it.

I had tried including

environment=SECRET_KEY="secret_key_with_non_alphanumeric_chars"

in the conf file for supervisor but it didn’t like the non alphanumeric chars and I didn’t want to have my key in the conf file as I have it in git.

After loking at supervisor’s docs I had also tried with:

HOME="/home/django", USER="django"

but didn’t work.

Finally I tried with this and is working now!:

environment=HOME="/home/django", USER="django", SECRET_KEY=$SECRET_KEY

Maybe although it’s working it’s not the best solution. I’d be happy to learn more.

EDIT:

Finally, Ewan made me see that using the bash for setting the env vars wouldn’t be the best option. So one solution, as pointed by #Ewan, would be to use:

[program:my_project]
...
environment=SECRET_KEY="secret_key_avoiding_%_chars"

Another solution I found, for those using virtualenv would be to export the env vars in the “activate” script of the virtualenv, that is, edit your virtualenv/bin/activate file and add at the end your SECRET_KEY.

This way you can use % chars as generated by key generators for django and is valid if you don’t use supervisor.

I restarted my server without logging to check that it worked. With this option I don’t have to edit my keys, I can keep my conf files versioned and it works whether I use supervisor, upstart or whatever (or nothing, just gunicorn).

Anyway, I know I haven’t discovered anything new (well @Ewan raised an issue with supervisor) but I’m learning things and hope this can be useful to someone else.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)