-
gunicorn error카테고리 없음 2022. 6. 18. 00:36
멋사에서 수강했던 장고 교육과정의 마지막 배포단계에서 겪었던 에러이다.
동영상 재생 가능 기간 내에 해결방법을 찾지 못했는데 드디어 해결했다.
배포단계에서 gunicorn을 사용했다. 과정은
의 내용과 동일하다.
그런데
sudo systemctl start gunicorn
을 하고 status를 확인해 보면 계속해서 failed가 떴다.
재시작부터 daemon-reload만 반복해서 하다가 찾아낸 방법은 아래와 같다.우선
sudo systemctl --failed
명령어로 실행에 실패한 서비스 목록을 확인하면 gunicorn.service가 뜬다.
그럼sudo systemctl reset-failed
명령어로 실패한 서비스들을 다 지워준다.
그리고sudo systemctl status gunicorn.socket
명령어로 일단 gunicorn.socket이 잘 돌아가고 있는지 확인한다.
아직 무언가 코드를 고치지 않았기 때문에 gunicorn.service는 여전히 실행이 안될 것이다.하지만 이전과 다른 점은
sudo systemctl status gunicorn
명령어를 입력했을때, failed가 아닌 inactivate 라고 뜬다.
튜토리얼에 보면 inactivate상태에 관한 내용이 있기 때문에 여기까지만 해도 절반 왔다고 생각했다.
튜토리얼에 보면 제대로 실행이 되지 않을때 쓰라는 명령어가 있는데 그것이sudo journalctl -u gunicorn
이 명령어 이다.
위 명령어를 입력하면 로그들이 쭉 나온다. 로그 중에서gunicorn: error: argument --access-logfile: expected one argument
가 있길래 이거에 대해 검색했더니 해결방법을 찾을 수 있었다.해결 방법은 'The solution is just by solving the gunicorn command pattern by revising the above command pattern as follows :' 하고 나와있는데, gunicorn 명령 패턴을 다음과 같이 고쳐씀으로 문제를 해결할 수 있다고 한다.
그리고서 나오는 내용이 gunicorn.service 파일에 있는 코드들이다./home/django/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/django/apps.sock apps.wsgi:application
이러하다.
포인트는--access-logifle --workers 3
이부분을--access-logfile - --workers3
이렇게 고치는 것이다.
정말 놀랍게도 위와 같이 - 하나 추가한 것으로 gunicorn을 실행할 수 있었다.
(gunicorn.service 파일을 수정했기 때문에 새로 daemon-reload를 하는 작업이 필요하다.)어째서 저 -가 필요한건지는 아직 잘 몰라서 그에 대한 내용은 더 찾아보려고 한다.
해결방법 참고 링크