Pythonanywhere.com에 Django 프로젝트 배포하기 (2)

2020. 02. 15 IT/컴퓨터 > Django

이전편에 이어서 pythonanywhere.com 을 이용해 Django 프로젝트를 배포해 본다.

이전 글: Pythonanywhere.com에 Django 프로젝트 배포하기 (1)

 

 

#16. Web tab에 가면 [ 자기id.pythonanywhere.com ] 도메인 이름을 확인할 수 있는데, 이 시점에서 브라우저에 이 URL을 입력해보면 기본 Hello, World! 앱을 볼 수 있다.

 

 

#17. 우리가 만든 가상 환경의 이름을 Web 탭 중간쯤에 있는 Virtualenv: 섹션에 입력해준다.

주소는 [ /home/자기id/.virtualenvs/myproject ] 와 같다. 기억이 잘 나지 않는 경우 dashboard에서 Files 탭에 가서 루트 디렉토리에서 .virtualenvs/ 디렉토리로 들어가 보면 자기가 만든 가상환경의 이름을 확인할 수 있다. 가상환경을 등록하고 나면 아래에 그 가상 환경에서 작업할 수 있는 console 링크가 생긴다.

 

#18. Virtualenv 위의 Code: 섹션에 source code 를 입력해준다. 형식은

[ /home/자기id/프로젝트 디렉토리 이름 ] 과 같다. manage.py 가 있는 디렉토리가 맞는지 확인하고 입력한다.

 

#19. Code 섹션에 있는 WSGI configuration file을 클릭하면 편집기가 나온다.

중간의 Hello world 관련 부분은 주석 처리하거나 지워서 Hello, World! 화면이 나오지 않게 해주고

 

#20. 같은 파일 아래쪽을 보면 DJANGO 설정 부분이 있는데, 이 부분의 주석처리를 없애 실행되도록 만들어 주면 된다. 이때 path 에는 아까 Code 섹션에서 지정해준 source code 디렉토리 (manage.py가 있는) 를 지정해주고, settings 경로는 path 디렉토리 아래에 있는, settings.py 가 있는 디렉토리를 지정해 준다.

 

#21. 이제 거의 다 되었는데, 브라우저에 자기id.pythonanywhere.com 주소를 입력해 본다. 이때 다음과 같은 에러 메세지가 나올 수 있다. 이를 해결하기 위해 #20에서 지정한 settings.py 파일을 열고, ALLOWED_HOSTS 에 [ 자기id.pythonanywhere.com ] 을 추가해 준다.

 

ALLOWED_HOSTS 수정 후 프로젝트의 첫 페이지 화면이 로딩된 것을 확인할 수 있다. 

 

#22. 그러나 사실 아직 static file 경로가 설정되지 않아 css 파일등 정적 파일이 로딩되지 않았다.

우선 #20에서 지정해주었던 settings.py 를 찾아 STATIC_URL과  STATIC_ROOT 을 지정해 주어야 한다. 주의할 점은 STATIC_ROOT를 STATIC_URL과 겹치지 않는 이름으로 지정해 주어야 한다. 여기서는 URL은 /static/, ROOT는 루트 디렉토리 아래의 /web_staticfiles/ 라고 지정했다.

 

#23. 이후 Web tab으로 돌아와 Static files: 섹션을 찾아 URL 을 지정해 준다. #22에서 지정했던 디렉토리를 입력해 주면 된다. 

 

#24. Bash console 을 열고,

$ python manage.py collectstatic 

커맨드를 실행해 준다. 이 커맨드를 실행하면 프로젝트 내의 정적 파일들을 위에서 지정해준 STATIC_ROOT 디렉토리로 모아서 실제 웹 서비스가 가동될 때 이곳에서 파일을 읽을 수 있게 해 준다.

 

#25. 이제 css 파일이 정상적으로 로딩되어 지정해준 폰트가 적용된 것을 볼 수 있다.

 

 

이상으로 pythonanywhere.com 에서 Django 프로젝트를 배포해 보았다. Microsoft azure나 Heroku 등의 서비스에서 배포하려고 하다가 설정이 너무 복잡하고 에러가 많아 어려움을 겪었는데, pythonanywhere에서는 상대적으로 간단히 배포가 되는것같다. 호스팅 업체 규모가 크지는 않은것 같아서 대규모 프로젝트에서의 동작은 어떨지 모르겠지만, 개인용 블로그같은 사이트를 쉽게 배포할 때 이용하기는 좋을 것같다.



최근 글 목록