개발과 배포환경 관리
-
debug = True 면 모든 url 과 나오기에 보안에 매우 취약
-
ALLOWED_HOST = []
에 들어갈수 있는 주소만 적어서 사용해야함
-
SQLlite는 connections이 하나밖에 안되서 실제 환경에서 사용불가
-
STATIC 부분도 변경해야함
- settings.py -> local.py 로 변경시킨다. 그후
cd config
ln -sf local.py settings.py # settings.py 가생김 (바로가기를 만든것)
ls -al # setting.py 가 local.py 를 가르킴
runserver # 변경하면 실행이 잘됨
- local.py 에 `print('local')
- 바로가기 형태의 파일을 만든다
- .gitignore -> settings.py 를 추가시킨다
- 기초 작업시, README.md 제작후
## 설정
```shell
$ cd config
$ ln -f local.py settings.py -> 소프트 링크 걸어서 사용하는구나 라 생각
- 배포환경은 prod.py 를 제작
form .local import *
DEBUG = false
ALLOWED_HOSTS = ['127.0.0.1:8000']
print('*' * 100)
print('prod')
print('*' * 100)
- 다시
cd config
ln -sf prod.py settings.py
ls -al # setting.py 가 prod.py 를 가르킴
- 실행하면 로컬이 먼저 실행되고, pord.py 가 불려온다
- 즉 pord.py 에서 로컬환경에서 쓰는게 아닌 배포환경에서 쓸걸 적용시키면 된다. 예를들어 데이터베이스
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': BASE_DIR / 'db.mysql',
}
}
- 배포환경을 사용할땐 ln으로 pord.py 를 가르키고
- 현재 개발환경을 사용할땐 다시
ln -sf local.py settings.py
로 해서 사용
- 로컬에서 데이터 베이스 관련해서 migrate 다 테스트 해보고 배포환경으로 올리는것이 매우중요
- 개발환경에서 데이터베이스 실수로 migrate 하면 모든데이터가 망가질 수도 있음
배포
- pythonanywhere : 호스팅서버 무료로 사용할수잇음
- 회원가입
- open web teb
- add a new web app
- manual configuration , 3.10 -> next
- 링크 나옴
- code 부분에 go to directory 들어가면 파일들이 나와있음
- Open Bash console here
- 웹에서 터미널 처럼 보일것이다
- git clone 해서 다운 -> 생성 폴더로 이동
- ssh keygen(private 이면 이거 해야함)-> 설정하고 github settings에 ssh and gpgkey에 넣어야함
- ls 해보면 settings.py 가 없음
ln -sf prod.py settings.py
settings.py 생성
- 여기선 poetry로 배포하기가 어렵다 aws에선 괜찮음
- 우선 pip 로 해보자
- requirements제작
- 우리 터미널에
poetry export --without-hashes --format=requirements.txt > requirements.txt
or pip freeze > requirements.txt
- pyproject.toml python = 3.10 으로 변경후 다시 위코드 수정 (배포환경을 3.10 으로 설정)
- prod.py 에서
ALLOWED_HOST ['']
수정 , 배포한 환경의 주소 넣으면됨
- static 파일 처리를 위해
STATIC_ROOT = '.static_root'
깃에 다시 push 한후 git pull
- 배포 쉘에서
pip install -r requirement.txt
- 일단 오류 무시하고 진행
- 스태틱 파일 한곳으로 몰기위해
python manage.py collectstatic
스태틱 파일 한곳으로 모는 명령어
- ls -al 쳐보면 .static_root 가 생겼을거임
배포 서버 페이지 Code -> Source Code부분 변경
- manage.py 있는 경로에서 pwd 입력후 위치 경로 복사
- 소스코드 부분에 복사 후 체크
WSGI부분 변경
- 밑의 HELLO 부분 주석
- 장고라고 되어있는부분 주석 해제
- path를 우리가 아까 pwd 했던 경로로 변경
mysite.settigns
-> config.settings
- Reload
에러처리
- 밑에 log fiels , error log 접속
- 테이블이 없다고 나옴
- migrate를 안해줌
- 배포한경의 shell
python manage.py migrate
static 파일
- 밑의 static 파일즈 부분
- url
/static/
- directory ->
복사한 경로/.static_root
테스트
- shell로 createsuperuser 만들어서 처리
- admin 페이지들어가서 확인