wafflestudio / seminar-2021

2021 Rookies 세미나
47 stars 110 forks source link

장고 과제4 서버 실행시 static file not found 에러 질문드립니다. #667

Closed ksiyeon27 closed 2 years ago

ksiyeon27 commented 2 years ago

요약

커맨드창

gunicorn waffle_backend.wsgi --bind=0.0.0.0:8000 으로 서버를 열었을 때 nginx를 사용한 이후에도 위와 같이 static not found 가 뜨고 있습니다.





상황

pdf와 강의내용을 참고하여, nginx 설치, nginx.conf 수정, settings.py의 static 부분 수정, collectstatic 등을 완료하였습니다. 이후 gunicorn을 이용하여 서버를 돌렸는데도 여전히 static을 찾지 못하고 있습니다.





문제 내용

위 터미널 창에서도 확인할 수 있듯이 collectstatic 이후 디렉토리 상에서는 문제없이 static이 존재하는 것 같은데 왜 스태틱 파일을 찾지 못하는지 모르겠습니다.

nginx conf

위는 ngingx.conf를 수정한 내용입니다.

세팅스파이

위는 settings.py를 수정한 내용입니다.

구글링을 해봤을 때도 위 과정 중에 하나를 빼먹어서 그렇다는 사례들만 자주 본 지라 도움을 청하고 싶습니다.

+) --daemon을 붙여서 서버를 돌리면 터미널을 꺼도 알아서 서버가 돌게 되는 것 맞나요?

jaejae2374 commented 2 years ago

19.5기 이재현입니다. 혹시 sudo vi /var/log/nginx/error.log 로 error 로그를 볼 수 있을까요? 저도 강의자료 대로 다 완료한 것 같은데 자꾸 에러가 떠서요. 저의 경우 에러로그에 나왔던 내용은 2021/11/11 15:01:24 [error] 22505#22505: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 1.227.25.63, server: 13.209.40.126, request: "GET /admin HTTP/1.1", upstream: "http://127.0.0.1:8000/admin", host: "13.209.40.126"

이거였습니다.

ksiyeon27 commented 2 years ago

19.5기 이재현입니다. 혹시 sudo vi /var/log/nginx/error.log 로 error 로그를 볼 수 있을까요? 저도 강의자료 대로 다 완료한 것 같은데 자꾸 에러가 떠서요. 저의 경우 에러로그에 나왔던 내용은 2021/11/11 15:01:24 [error] 22505#22505: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 1.227.25.63, server: 13.209.40.126, request: "GET /admin HTTP/1.1", upstream: "http://127.0.0.1:8000/admin", host: "13.209.40.126"

이거였습니다.

sudo vi /var/log/nginx/error.log

저는 위 방법으로 error.log 열었을 때 안에 아무 내용도 없습니다. 혹시 /admin으로만 해보셨으면 /api/v1/seminar/ 같은 걸로 시도해보시는게 좋을 것 같습니다. 저도 어드민은 서버에서 "Site matching query does not exist."으로 뜹니다.

저는 서버 실행은 하지만 static을 찾지 못하는 문제인 것 같습니다.

Jhvictor4 commented 2 years ago

@ksiyeon27

일단 --daemon 옵션은 말씀하신 것처럼 백그라운드 앱으로 실행되도록 만드는 것이 맞습니다.

파일 Not found 이슈는 혹시 /static/rest_framework/js/csrf.js 형태로 서버에 들어갔을때도 404가 뜨고 있나요?

nginx가 권한이 없어 폴더를 읽지 못하면 에러 로그가 쌓일 텐데,,

아니면 혹시 nginx 설정 변경 하신 뒤로 재시작을 안하셨다거나 하는 마이너 이슈일수도 있을 것 같습니다.

Jhvictor4 commented 2 years ago

@jaejae2374 connection refused 라면 wsgi 서버가 잘 구동되고 있는지 한번 확인해주셔야 할 것 같습니다. 켜져있는데도 나고 있으시면 이슈 하나 새로 생성해주세요! 들어가서 확인해보겠습니다.

jaejae2374 commented 2 years ago

@Jhvictor4 엇 daemon으로 실행되고있는줄 알았는데 안됐었나보네요 ..! 해결됐습니다 감사합니다 :-)

ksiyeon27 commented 2 years ago

@ksiyeon27

일단 --daemon 옵션은 말씀하신 것처럼 백그라운드 앱으로 실행되도록 만드는 것이 맞습니다.

파일 Not found 이슈는 혹시 /static/rest_framework/js/csrf.js 형태로 서버에 들어갔을때도 404가 뜨고 있나요?

nginx가 권한이 없어 폴더를 읽지 못하면 에러 로그가 쌓일 텐데,,

아니면 혹시 nginx 설정 변경 하신 뒤로 재시작을 안하셨다거나 하는 마이너 이슈일수도 있을 것 같습니다.

http://13.112.28.235:8000/static/rest_framework/js/csrf.js 이렇게 해보라는 것이시면 역시 404가 뜨긴 하는데 이런 path가 가능한가요?

스크린샷 2021-11-12 오후 3 46 42

지금 findstatic을 했을 때 이렇게 뜨는 것을 보니 static이 제대로 안 만들어진 것 같은데 collectstatic을 했을 때 문제 없었고 static 폴더도 잘 만들어지긴 했습니다. 좀 더 찾아보겠습니다. 혹시 static이 잘 들어오신 분이 계시다면 조언 주시면 감사하겠습니다🥲

제 디렉토리 구조는

스크린샷 2021-11-12 오후 3 58 15

이렇습니다.

ksiyeon27 commented 2 years ago

@Jhvictor4 말씀하신 재시작도 하였고 sudo nginx -t 했을 때 nginx 는 문제가 없는 것 같습니다.

esc5221 commented 2 years ago

settings.py ALLOWED_HOST에 127.0.0.1를 추가해보시겠어요?

nginx가 ec2 public IP로 접속한걸 127.0.0.1:8000으로 연결하고, 장고는 로컬호스트의 포트 8000번을 쓰니 최종적으로 연결되는 구조로 작동하는 걸로 알고있습니다.

nginx를 사용하게 되면 외부 ip 접속은 nginx에서 처리하고 장고는 nginx에 의해 proxy_pass된 localhost의 연결을 받게 되는 것 같습니다. 그래서 외부에서 서버 접속 테스트시 ALLOWED_HOST를 ec2 public IP로 바꿔뒀던 것을, 다시 local host로 다시 돌려놔야 되는것 같습니다.

Jhvictor4 commented 2 years ago

@ksiyeon27 님 , 이슈 해결하셨나요?

findstatic 커맨드 하셨을때 가상환경 안에서 입력하시면 static 파일 경로가 다르게 나올 것 같기도 한데, 현재 어떻게 구동되고 있는지 알지는 못해서 저도 마땅한 해결책이 떠오르지 않네요..ㅜ

혹시 pem key, IP 전달주시면 들어가서 좀 더 확인해보겠습니다

ksiyeon27 commented 2 years ago

settings.py ALLOWED_HOST에 127.0.0.1를 추가해보시겠어요?

nginx가 ec2 public IP로 접속한걸 127.0.0.1:8000으로 연결하고, 장고는 로컬호스트의 포트 8000번을 쓰니 최종적으로 연결되는 구조로 작동하는 걸로 알고있습니다.

nginx를 사용하게 되면 외부 ip 접속은 nginx에서 처리하고 장고는 nginx에 의해 proxy_pass된 localhost의 연결을 받게 되는 것 같습니다. 그래서 외부에서 서버 접속 테스트시 ALLOWED_HOST를 ec2 public IP로 바꿔뒀던 것을, 다시 local host로 다시 돌려놔야 되는것 같습니다.

답변 감사합니다:) 시도해보았으나 해결은 못했습니다ㅠㅠ 감사합니다.

ksiyeon27 commented 2 years ago

@ksiyeon27 님 , 이슈 해결하셨나요?

findstatic 커맨드 하셨을때 가상환경 안에서 입력하시면 static 파일 경로가 다르게 나올 것 같기도 한데, 현재 어떻게 구동되고 있는지 알지는 못해서 저도 마땅한 해결책이 떠오르지 않네요..ㅜ

혹시 pem key, IP 전달주시면 들어가서 좀 더 확인해보겠습니다

다른 과제 때문에 너무 늦게 확인해서 죄송합니다ㅠㅠ 시간이 가능하시다면 부담없이 확인해주시면 감사하겠습니다. ip 는 13.112.28.235 이고, pem 키는 첨부가 안되어서 카카오톡으로 전달해드리겠습니다.