on
#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