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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…