AWS
Amazon Web Service 의 약자인 AWS는 아마존의 자회사로 2006년 설립됐다. 주력 제품은 클라우드 서비스다. 구글이나 네이버 클라우드는 일반 소비자를 대상으로 서비스를 제공하여 저장공간에 접근하는 등의 서비스를 이용하는데 아마존의 주요 고객은 개발자 엔지니어 등 IT 관계자이며, AWS가 제공하는 서비스는 '인프라'다.
배포 전 사전준비
-환경변수
-시스템에 저장되어 있는 변수
보통 비밀키 등 유출되면 안되는 정보
또는 환경에 차이를 둘 때 사용(테스트/프로덕션 구별 등)
os.environ에서 dict 형식으로 불러올 수 있음
os.environ.get('변수명','기본값')으로 사용
-requirements.txt
내 파이썬 앱을 실행하기 위해 우선 설치되어야 하는 패키지들
Django, Pillow등
패키지명 == 벼전으로 저장
pip freeze명령어는 해당 환경에 설치된 모든 패키지를 보여줌
>는 프록램의 출력을 파일에 저장한다는 뜻
pip freeze>requirements.txt로 생성
IAM
Identity and Access Management의 줄임말
IAM에서 계정을 만든 후 해당 계정 로그인 정보 (엑세스키& 시크릿 키)를 이용하여 AWS의 API활용
보안을 위해 권한을 최대한 보수적으로 잡음
S3
Simple Storage Service의 줄임말
AWS에서 제공하는 구글드라이브 정도로 생각할 수 있음
최초 용량 지정 없이 사용한 만큼만 과금되므로 용량 예측할 필요X
여러 서버에서 동시에 접속 가능(부하 분산 유리)
settings.py
pip freeze : 설치된 가상환경 모두 표시
pip freeze > requirements.txt
AWS Console에서 로그인 후
사용자 추가
터미널에 가서
settings.py
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
다시 AWS console로 간다
s3검색 후 -> 버킷 만들기
모든 퍼블릭 엑세스 차단 누른다 = 버킷 생성
settings.py
pip install boto3 : AWS관련 API를 파이썬에서 쉽게 활용할 수 있도록 AWS측에서 직접만든 패키지
python manage.py runserver 하고 생성하면 맞게 돌아감
1. Heroku 회원가입 - https://www.heroku.com
2. Heroku CLI 설치 - https://devcenter.heroku.com/articles/heroku-cli
3. 환경 변수 적용-
Debug 는 아래 값 사용
DEBUG = (os.environ.get('DEBUG', 'True') != 'False')
4. .gitignore 파일 적용 (파일 생성)
gitignore.io 에서 Django 선택 후 '생성' 클릭
페이지에 나온 텍스트를 모두 복사후 .gitignore 파일로 저장
5. Heroku 용 파일 작성
Procfile 이라는 파일을 만들어 아래 내용 작성 - manage.py있는 폴더안에 Procfile을 생성
web: gunicorn 프로젝트명.wsgi --log-file -
runtime.txt 파일에 아래 내용 작성 - manage.py있는 폴더안에 생성
python-3.X.X / 내 버전 적어준다
6. 필요한 Dependency 설치
pip install gunicorn whitenoise dj-database-url psycopg2-binary
7. settings.py 수정
Whitenoise 설치
MIDDLEWARE 에서 제일 SecurityMiddleware 바로 아래 내용 추가
'whitenoise.middleware.WhiteNoiseMiddleware',
-ALLOWED_HOSTS 수정
ALLOWED_HOSTS = [] 를 ALLOWED_HOSTS = ['*'] 로 수정
-DB 관련 코드 수정
settings.py 제일 밑에 아래 내용 추가
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
requirements.txt 생성
pip freeze > requirements.txt
git에 수정된 파일들 추가
git add -A
git commit -m "add files for deploying to heroku"
Heroku 관련 명령어들 실행
오류: bash : heroku : 명령을 찾을 수 없습니다
[git bash에 path구성이 등록되어 있지 않아 생긴 오류]
/c/Program\ Files/Heroku/bin/heroku login 이렇게 치면 오류X
PATH="$PATH:/c/Program Files/Heroku/bin"
heroku login
heroku create
git push heroku main 수정이 되면 여기부터 다시 git push를 해야 heroku에 반영이 된다
여기까지 실행하고 주소로 가면 이러한 오류
ProgrammingError at /
relation "must_go_mustgo" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "must_go_mustgo"
-아직 migration이 되지 않아서 db가 존재하지 않는다는 오류
heroku run python manage.py migrate
heroku run python manage.py createsuperuser
heroku open
Heroku 에서 환경 변수 설정
https://dashboard.heroku.com 에서 앱 선택
Settings
Config Vars > Reveal Config Vars
KEY VALUE 값에 입력후 저장
'기타 > Django & Web' 카테고리의 다른 글
[Heroku Error 에러] ValueError at / I/O operation on closed file. (0) | 2021.07.10 |
---|---|
[Heroku 에러] 히로쿠 앱 삭제 / app delete (0) | 2021.07.09 |
[git] django - 깃으로 협업하기 (0) | 2021.06.22 |
TypeError: 'Manager' object is not callable (0) | 2021.05.20 |
[django] 중복되는 html을 한 곳에 모아놓는 : base.html (0) | 2021.05.20 |