티스토리 뷰

728x90

무쓸모톤이 이렇게 종료되었고 나는 이 서비스를 그냥 깃허브에 썩히기 아까워서 배포를 하기로 마음 먹었다. 생애 첫 배포라서 잘 할 수 있을지 떨렸고 멋쟁이 사자처럼 세션 중 배포는 거의 기도메타(?) 라고 해서 오류와 싸울 생각에 머리가 벌써 아찔했다. 하지만 우리 귀요미 찐품명품을 세상에 알리기 위해서 배포를 시작했다.

728x90

배포가 뭔가요?

장고는 실행 시 각자 다른 DB를 만들어야한다. 왜냐면 내가 만든 DB는 공유되지 않아서 보이지 않기 때문이다. 하지만 배포를 통해 실제 서비스를 시작하게 된다면 어떤 사람이든지 특정 도메인을 통해 사이트를 들어올 수 있고 같은 DB를 볼 수 도 있다. 그렇기 때문에 DB를 사용하는 장고라면 더욱 더 배포가 절실했다.

 

배포를 해봅시다

배포를 하기 전 먼저 pythonanywhere에 가입을 해야한다.

 

먼저 가입을 하게 되면 다음과 같은 화면으로 들어가진다.

이후는 내가 참고한 블로그를 보면 된다. 나보다 훨씬 설명을 잘 써주셨고 나보다 이해하기 쉽게 적어주셨다 ㅎㅎ

https://m.blog.naver.com/pjok1122/221607377401 

 

[Python / Django] pythonanywhere 배포하기(웹 호스팅)

1. 배포를 위한 설정 Setting.py에서 다음을 수정하셔야 합니다. (1) DEBUG 처음에는 DEBUG &#x...

blog.naver.com

 

그럼 난 날로 먹느냐..

난 이번에 배포를 처음하면서 생긴 오류를 집중적으로 파악해서 해결법을 빠르게 정리해보겠다.

 

 

 

 

 

 

1. 대표적인 오류인 Unhandled Exception

이 오류는 저기 보이는 error.log를 봐야 한다. 나는 처음에 Error code 만 보고 문제를 해결하려 했으나 진짜 문제는 저 아래 error.log에 존재한다는 것을 알았다. 대부분의 오류는 철자나 문법 문제이거나 탭 키의 문제이다. 내 경우에는 블로그를 참고하여 복붙으로 코드를 작성했는데 이 때 복붙을 하면 탭 하나당 스페이스바의 개수가 실제 코딩과 다르게 카운트가 되어 적용된다는 점이다. 그래서 하나하나 다시 쳐본 결과 해결되었다.

 

 

 

 

 

 

2. 이미지가 뜨지 않는 오류

이 오류는 다른 이미지나 정보는 잘 표시되지만 특정 모델 속 이미지만 표시되지 않는 오류이다.

오류의 원인은 models.py에서 속성을 보면 알 수 있었는데 우리가 이미지를 올렸을 때 서버에 올려야하지만 현재는 다른 곳에 올라가게끔 적혀있다. 배포용으로 수정 시 바뀌지 못한 부분이었다.

그래서 image에서 upload_to 속성을 삭제하고 phythonanywhere 에서 media 파일 주소를 지정해줬다.

이렇게 지정해줘야 이미지를 잘 불러온다.

 

 

 

 

3. DB나 모델 삭제 시 Server Error (500) 오류

이 오류는 시험 삼아 올렸던 데이터들을 삭제하고 다시 제대로 된 데이터를 올리려다가 발생했다. 대부분은 다 잘 삭제가 되었지만 특정 데이터들만 이런 오류가 떴다. 

조사를 해보니 내가 settings.py에서 ALLOWED_HOSTS를 hyun1011.pythonanywhere.com 만 등록해놨다. 그래서 다른 요청을 하게되면 서버의 오류로 작동을 안하는 것이었다. 내 경우에는 ALLOWED_HOSTS='*'를 해주니 바로 해결되었다.

 

 

 

 

4. Foreign Key constraint failed 오류

잘 해결하다가 삭제 시 잘 알지 못하지만 외래키 오류같은 것이 떴다.

다른 기능은 잘 작동하나 유독 삭제 부분만 오류가 많았다. 이 오류도 왜 생기는지 조사를 해봤는데 내가 아까 모델 수정 후 createsuperuser 를 했는데 그 때 이미 존재하던 Custom User Model(내가 임의로 만든 유저 모델)과 충돌을 일으켰다고 한다. 상속 문제로 충돌을 일으키기 때문에 실행이 되지 않는 것이라 했다. 따라서 다음과 같은 방법으로 해결했다.

 

  1. db.sqlite3 파일 삭제
  2. Custom User Model 을 구현한 app 의 migrations 폴더 중 001.~~ 파일 삭제
  3. python manage.py makemigrations 
  4. python manage.py migrate

이렇게 5가지의 난관을 헤쳐서 결국 배포를 해냈다..!!!!!!

 

 

 

 

 

 

진짜진짜 프로젝트 마무리

만약 이 블로그를 보신 행운아분들이 계시다면 페이지에 들어가서 게시글 하나만 부탁드릴게요 ㅎㅎ

찐품명품 주소 : https://hyun1011.pythonanywhere.com/

728x90
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크