내가 supervisord를 사용하는 것이 좋습니다 : 그래서 함께 gunicorn 호출해야 사용자 정의 settings.py 파일을했다. Supervisor는 부팅 할 때 말하는 사용자 계정으로 앱을 시작합니다.
[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
내 run_gunicorn 스크립트는 다음과 같습니다 :
는
#!/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
난을 my_app에 직접 gunicorn 참조 할 수
는 여기에 내가 /etc/supervisor/conf.d/ 아래에 배치 내 my_app.conf입니다 .conf하지만이 방법으로 활성화 할 수 있기 때문에 실행하지 않습니다. 내 활성화 스크립트의 끝 부분에 내 DJANGO_SECRET을 env var로 넣습니다. Git 또는 Mercurial에 속하지 않는 API 키 및 기타 민감한 항목으로도이를 수행하는 것이 좋습니다.
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
가 사실은 내가이 개선 될 수 확신하지만, 그들은 루트없이 내 응용 프로그램 실행을 얻을 :
내 gunicorn.conf이다. Supervisord는 앱 서버가 계속 실행되도록합니다. 나는 proxy_pass를 통해 내 응용 프로그램 서버에서 nginx를 가리킨다 (필요한 경우 공유 할 수있다).
편집 : 파일 이름 명확화
정말 확실합니까? gunicorn_django 명령의 시작 부분에'-u nobody'를 추가 할 수 있습니까? 이것은 나를 위해 작동하지 않는 것 같습니다. – Mark
@ 마크 그들은'sudo' 명령의 끝에'-u nobody'를 추가하고'gunicorn_django' 명령의 시작은 추가하지 않습니다. sudo -u는 다음 명령을 실행하기 위해 root가 아닌 다른 사용자를 선택할 수있게합니다. – BHSPitMonkey