#30 settings.py 분리

#30 settings.py 분리

1. 로컬환경, 서버환경의 분리

지난 글에서 AWS 라이트세일을 사용하여 pybo 서버를 오픈하기 위해 config/settings.py 의 ALLOWED_HOSTS 를

수정하였다. 그런데 이렇게 하면 로컬 개발환경에서 서버를 구동할 수 없는 문제가 발생한다. 그리고 ALLOWED_HOSTS

외에도 로컬 개발환경과 서버환경에서의 설정이 달라야하는 부분도 분명 존재할 것이다. 이런 문제를 해결하려면

로컬환경과 서버환경에서의 설정을 달리 적용시킬 수 있어야한다.

2. settings.py 분리

settings.py 를 분리하는 작업은 views.py 의 분리작업과 유사하게 진행된다.

먼저 config 디렉토리에 settings 디렉토리를 생성한 뒤 기존 settings.py 를 base.py 로 파일명을 변경하여 settings

디렉토리로 옮긴다. 그 후 파일이 한층 더 디렉토리 내부로 이동했으니 BASE_DIR 끝에 .parent를 한번 더 붙여준다.

로컬 환경용 설정파일 local.py 를 생성하여 base.py 를 import 해주고 ALLOWED_HOSTS 를 빈 리스트로 설정한다.

서버 환경용 설정파일 prod.py 를 생성하여 base.py 를 import 해주고 ALLOWED_HOSTS 에 AWS 라이트세일

인스턴스의 고정 IP를 넣어준다.

이제 로컬측에서 python manage.py runserver --setings=config.settings.local 을 실행하면 서버가 정상적으로

구동되는 것을 확인할 수 있다. --settings 는 어느파일을 settings.py 로 인식할지 지정하는 옵션이다.

3. alisas 를 사용한 서버 설정 자동화

sh 파일을 사용한 자동화는 sh 파일의 경로를 찾아가 실행해야하는 불편함이 있다. 이를 보다 편하게 바꿔보자.

cd ~ vi .bashrc

위와 같이 홈 디렉토리로 이동(cd ~)한 뒤 .bashrc 파일을 vi 로 열어 맨 아랫줄에 mysite 라는 alias 를 추가해준다.

DJANGO_SETTINGS_MODULE 는 서버 실행시 --settings=config.settings.local 옵션을 대신해주는 환경변수이다.

mysite='<실행할 명령어>' 에서 = 좌우로 띄어쓰기를 넣지 않도록 해야한다.

.bashrc 파일을 저장한 뒤 실행시키는 것으로 수정사항을 반영해주고나서 alias 명령어를 실행시키면 mysite 가 alias

목록에 추가된 것을 확인할 수 있다.

이제 어디서든 mysite 명령어로 서버 환경에서의 설정파일을 지정하고 프로젝트 디렉토리로 이동하여 가상환경에

진입하는 작업을 자동으로 실행할 수 있다.

from http://scala0114.tistory.com/118 by ccl(A) rewrite - 2021-10-14 15:26:36