본문 바로가기

Django/따라하는 장고

35. settings.py 분리

저번에 settings.py 의 ALLOWED_HOSTS 에 고정아이피를 추가해 서버를 구동했다. 하지만 이제 로컬서버를 구동해 파이보에 들어가면 오류가 발생한다. ALLOWED_HOSTS에 고정아이피를 등록했기 때문에 localhost 로 동작하는 로컬서버는 오류가 발생하는 것이다. 이 오류를 해결하려면 간단하게 ALLOWED_HOSTS 에 등록한 고정 아이피를 제거하면 된다. 하지만 로컬서버가 아닌 서버는 다시 오류가 발생한다. 이를 해결하기 위해 로컬환경과 서버환경을 구분해 줘야한다.

먼저 projects\mysite\config 위치에 settings 디렉토리를 생성해주자.

그리고 settings.py 파일을 settings 디렉토리에 base.py 라는 이름으로 이동시키자.

mv settings.py settings/base.py 명령어로 settings/base.py 로 이름을 변경해 옮긴 후. 옮긴 base.py 를 사진과 같이 수정해준다.

.parent 를 하나 더 적어준 이유는. 원래 settings.py 파일의 위치는 /projects/mysite/config 인데 /projects/mysite/config/settings 로 하나 더 깊어졌기 때문이다. /projects/mysite/config/settings/base.py 에서 총 3번의 .parent 가 사용되었으므로 BASE_DIR은 결국 /projects/mysite 인 것이다.

 

로컬환경을 담당하는 local.py 를 새로만들어 작성해준다.

projects\mysite\config\settings\local.py 를 만들어준다.

from .base import * 은 base.py 의 모든 내용을 사용한다는 의미이고, ALLOWED_HOSTS 는 로컬환경에 맞게 항목을 비워놓은 것이다. 

 

로컬환경은 설정했으니 서버 환경을 담당할 파일도 만들어 줘야한다.

projects\mysite\config\settings\prod.py 파일을 새로 만들어주고 다음과 같이 작성해주자.

 

 

이제 로컬서버를 구동해보자. 

오류가 발생한다. 이제는 로컬환경과 서버환경을 구분지어서 구동시켜줘야하기 때문이다. 먼저 로컬환경을 구동시키려면

python manage.py runserver --settings=config.settings.local 이라고해야 로컬환경을 구동시킬수 있다.

python manage.py runserver 뒤에 --settings=config.settings.local 이라는 옵션을 주었다. --settings 옵션은 장고서버가 읽어야할 설정파일을 지정하는 옵션이다. 그 뒤에적힌 명령어는 config\settings\local.py 를 읽으라는 뜻이다.

 

그렇다면 서버환경을 구동할때는

python manage.py runserver --settings=config.settings.prod 라고 해야한다. 서버 환경을 구동해서 파이보에 접속해보면 오류가 발생한다. 서버환경으로 구동하는. 파일 prod.py 에는 ALLOWED_HOSTS 에 서버의 고정아이피가 등록되어있기 때문이다.

 

이번엔 DJANGO_SETTINGS_MODULE 환경변수를 이용해보자. 이 환경변수는 장고 서버 실행 시 사용하는 --settings=config.settings.local 옵션을 대신하는 환경변수이다. DJANGO_SETTINGS_MODULE 환경변수를 settings=config.settings.local 로 설정해주면 python manage.py runserver 를 했을때 자동으로 환경변수를 찾아 뒤에 옵션을 안붙여도 로컬환경으로 구동이 된다. 이것들을 설정해주자.

\Users\<사용자명>\.zshrc 파일을 수정해 alias 를 추가해주자.

파일 수정은 vi 로 수정했다.

 

서버환경도 커밋하자.

그리고 AWS 터미널에 접속하여 올린 파일들을 내려받자.

AWS 터미널에 접속 후 가상환경에 진입 후 git 을 pull 하자. 그 후 

--settings=config.settings.prod 옵션을 추가해 서버를 구동하고 테스트를 해보면 잘 작동한다.

 

서버환경도 옵션을 추가할 필요없이 자동으로 작동하게 변경해보자. 

\home\ubuntu\.profile 파일을 vi 편집기로 수정해보자.

이렇게 .profile 파일을 수정하고 터미널을 종료후 다시 켜서 아무데서나 mysite 를 입력하면 자동으로 가상환경으로 진입한다. 그리고 서버구동시 옵션을 추가할 필요도 없어진다.

'Django > 따라하는 장고' 카테고리의 다른 글

37. Gunicorn(구니콘)  (0) 2022.12.09
36. WSGI(위스키)  (0) 2022.12.09
34. 파이보 오픈  (0) 2022.11.30
33. 서버 접속 설정 및 프로그램  (0) 2022.11.30
32. 서버  (0) 2022.11.30