Ben supervisord kullanılmasını öneriyoruz: Öyle birlikte gunicorn çağrılan gerekirdi özel settings.py dosyası vardı. Supervisor, uygulamanızı açılışta anlattığınız kullanıcı hesabıyla başlatır.
[program:my_app]
command=/home/some_user/my_app/run_gunicorn
directory=/home/some_user/my_app
user=some_user
redirect_stderr=true
stdout_logfile=/home/some_user/supervisord_stdout.txt
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=10
Benim run_gunicorn komut daha sonra:
#!/bin/bash
source /home/some_user/virtualenvs/my_app_virtualenv/bin/activate
exec /home/some_user/virtualenvs/my_app_virtualenv/bin/gunicorn -c gunicorn.conf wsgi:application
ben MY_APP doğrudan gunicorn referans olabilir
İşte /etc/supervisor/conf.d/ altında yer benim my_app.conf var .conf, ama yapamam çünkü bu şekilde aktive edebilirim. DJANGO_SECRET'imi, aktif betiğimin kuyruk ucuna env var olarak koyuyorum. Ayrıca, API anahtarları ve Git veya Mercurial'a ait olmayan diğer hassas şeyler ile bunu yapmak da iyidir.
backlog = 2048
bind = "127.0.0.1:9000"
pidfile = "/home/some_user/gunicorn-my_app.pid"
daemon = False
debug = False
workers = 3
logfile = "/home/some_user/gunicorn-my_app.log"
loglevel = "info"
timeout = 90
Aslında orada geliştirilebilir eminim, ama onlar root olmadan benim app yayınlanmasını sağlamak:
Benim gunicorn.conf olduğunu. Supervisord, uygulama sunucusunun çalışmasını sağlar. Daha sonra proxy_pass üzerinden uygulama sunucumda nginx'i işaretleyin (gerekirse bunu paylaşabilir).
DÜZENLEME: dosya adlarının açıklığa kavuşturulması
Komutun bu olduğundan emin misiniz? Gunicorn_django komutunun başında '-u nobody 'ekleyebileceğinizden emin misiniz? Bu benim için çalışmıyor gibi görünüyor. – Mark
@Mark 'su 'komutunun sonuna' -u kimse 'komutunu ekliyorlar,' gunicorn_django' komutunun başlangıcını değil. sudo -u, aşağıdaki komutu çalıştırmak için root dışında bir kullanıcı seçmenize izin verir. – BHSPitMonkey