Django 배포 with pythonanywhere

Haks.·2025년 2월 10일
0

How to use

목록 보기
24/32

개발과 배포환경 관리

  • debug = True 면 모든 url 과 나오기에 보안에 매우 취약

  • ALLOWED_HOST = [] 에 들어갈수 있는 주소만 적어서 사용해야함

  • SQLlite는 connections이 하나밖에 안되서 실제 환경에서 사용불가

  • STATIC 부분도 변경해야함

  1. settings.py -> local.py 로 변경시킨다. 그후
cd config
ln -sf local.py settings.py # settings.py 가생김 (바로가기를 만든것)
ls -al # setting.py 가 local.py 를 가르킴

runserver # 변경하면 실행이 잘됨
  1. local.py 에 `print('local')
  2. 바로가기 형태의 파일을 만든다
  3. .gitignore -> settings.py 를 추가시킨다
  4. 기초 작업시, README.md 제작후
## 설정
```shell
$ cd config
$ ln -f local.py settings.py -> 소프트 링크 걸어서 사용하는구나 라 생각
  1. 배포환경은 prod.py 를 제작
# config/prod.py
form .local import *

DEBUG = false

ALLOWED_HOSTS = ['127.0.0.1:8000']

print('*' * 100)
print('prod')
print('*' * 100)
  1. 다시
cd config
ln -sf prod.py settings.py 
ls -al # setting.py 가 prod.py  를 가르킴
  1. 실행하면 로컬이 먼저 실행되고, pord.py 가 불려온다
  2. 즉 pord.py 에서 로컬환경에서 쓰는게 아닌 배포환경에서 쓸걸 적용시키면 된다. 예를들어 데이터베이스
# prod.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': BASE_DIR / 'db.mysql',
    }
} 
  1. 배포환경을 사용할땐 ln으로 pord.py 를 가르키고
  2. 현재 개발환경을 사용할땐 다시 ln -sf local.py settings.py 로 해서 사용
  3. 로컬에서 데이터 베이스 관련해서 migrate 다 테스트 해보고 배포환경으로 올리는것이 매우중요
  4. 개발환경에서 데이터베이스 실수로 migrate 하면 모든데이터가 망가질 수도 있음

배포

  1. pythonanywhere : 호스팅서버 무료로 사용할수잇음
  2. 회원가입
  3. open web teb
  4. add a new web app
  5. manual configuration , 3.10 -> next
  6. 링크 나옴
  7. code 부분에 go to directory 들어가면 파일들이 나와있음
  8. Open Bash console here
  9. 웹에서 터미널 처럼 보일것이다
  10. git clone 해서 다운 -> 생성 폴더로 이동
  11. ssh keygen(private 이면 이거 해야함)-> 설정하고 github settings에 ssh and gpgkey에 넣어야함
  12. ls 해보면 settings.py 가 없음
  13. ln -sf prod.py settings.py settings.py 생성
  14. 여기선 poetry로 배포하기가 어렵다 aws에선 괜찮음
  15. 우선 pip 로 해보자
  16. requirements제작
  17. 우리 터미널에 poetry export --without-hashes --format=requirements.txt > requirements.txt
    or pip freeze > requirements.txt
  18. pyproject.toml python = 3.10 으로 변경후 다시 위코드 수정 (배포환경을 3.10 으로 설정)
  19. prod.py 에서 ALLOWED_HOST [''] 수정 , 배포한 환경의 주소 넣으면됨
  20. static 파일 처리를 위해 STATIC_ROOT = '.static_root' 깃에 다시 push 한후 git pull
  21. 배포 쉘에서 pip install -r requirement.txt
  22. 일단 오류 무시하고 진행
  23. 스태틱 파일 한곳으로 몰기위해
  24. python manage.py collectstatic 스태틱 파일 한곳으로 모는 명령어
  25. ls -al 쳐보면 .static_root 가 생겼을거임

배포 서버 페이지 Code -> Source Code부분 변경

  1. manage.py 있는 경로에서 pwd 입력후 위치 경로 복사
  2. 소스코드 부분에 복사 후 체크

WSGI부분 변경

  1. 밑의 HELLO 부분 주석
  2. 장고라고 되어있는부분 주석 해제
  3. path를 우리가 아까 pwd 했던 경로로 변경
  4. mysite.settigns -> config.settings
  5. Reload

에러처리

  1. 밑에 log fiels , error log 접속
  2. 테이블이 없다고 나옴
  3. migrate를 안해줌
  4. 배포한경의 shell python manage.py migrate

static 파일

  1. 밑의 static 파일즈 부분
  2. url /static/
  3. directory -> 복사한 경로/.static_root

테스트

  1. shell로 createsuperuser 만들어서 처리
  2. admin 페이지들어가서 확인

0개의 댓글

관련 채용 정보