-
0. 준비
-
반드시 오류가 없이 돌아가는 코드 준비!
-
aws 가입(해외 결제 가능 카드 필요)
-
내 계정, console login
1. 프로젝트 설정
-
.gitignore
-
gitignore.io 통해서 생성
-
-
pip
설정-
pip freeze > requirements.txt
-
-
루트페이지 설정
-
path('', views.list),
경로 잡아주기
-
2. AWS IAM 설정
-
권한추가
-
AWSElasticBeanstalkFullAccess
-
-
key 저장
---
-
AWS 서비스 -> 서비스 찾기 -> 왼쪽의 사용자 -> 맨위의 사용자 추가
-
사용자 이름: ebAdmin(ElasticBeanstalk, 이름은 임의로 설정 가능)
-
프로그래밍 방식 엑세스
-
기존정책직접연결: AWSElasticBeanstalkFullAccess검색, ElasticLoadBalance 검색, 체크박스 클릭 (aws서비스의 모든 권한중에 이것만 사용할수 있는 새끼 계정을 만드는 것임)
-> 다음 -> 다음
-
사용자 이름, 프로그래밍 방식, 정책 확인
-
엑세스 키를 별도의 장소에 저장 및 기억해두기(나중에 다시 볼 수 없다)
3. WS 계정 설정
-
awscli
설치-
pip install awscli
-
-
설치 확인
-
aws --version
-
-
계정 설정
-
aws configure
AWS Access Key ID: 본인 KEY ID 입력 AWS Secret Access Key: 본인 Secret Access 입력 Default region name: ap-northeast-2 # 한국 Default output format: json
-
-
확인
-
vi ~/.aws/config
-
vi ~/.aws/credentials
-
4. EB
-
eb cli
설치-
pip install awsebcli
-
-
프로젝트 폴더로 이동
-
설정
-
eb init
-
-
어플리케이션 default, python3.6, commit No, 에러가 발생
이유: ASCII Code 때문..
해결:
eb init --debug No 선택 에러확인 - sourcecontol.py 클릭해서 오픈 - 294번째에 with open 부분 수정 'r'-> 'r', encoding='utf-8' - 다시 console 열기 eb init --debug N 선택 N 선택
-
완료 확인
-
프로젝트 폴더 아래
.elasticbeanstalk/
폴더 생성
-
5. Django 설정
-
admin을 위한 계정 생성
-
python manage.py createsuperuser
-
ex)
id: todal password: todal
-
-
유저 정보 담긴 json 생성
-
superuser 만들기
-
유저 확장한 경우
python manage.py dumpdata accounts.User --indent 4 > users.json
-
유저 확장 안한 경우 (기본 model사용) => 이전 프로젝트에서 사용한 방법
python manage.py dumpdata auth --indent 4 > users.json 파일 생성 확인, 맨아래에 username : 'todal'확인
-
만들어진 파일은 accounts/fixtures 폴더로 이동
-
-
staticfile 설정
-
settings.py 수정(static 루트에 있음)
-
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") # 얘는 프로젝트마다 선택사항 (없는 경로를 쓰면 deploy 시 에러) STATICFILES_DIRS = [ STATIC_DIR = os.path.join(BASE_DIR, 'static'), ]
-
프로젝트 루트에 폴더 생성
-
mkdir .ebextensions
-
-
.ebextensions/default.config
파일 생성후 작성
# default.config option_settings: aws:elasticbeanstalk:application:environment: DJANGO_SETTINGS_MODULR: insta.settings aws:elasticbeanstalk:container:python: WSGIPath: insta/wsgi.py aws:elasticbeanstalk:container:python:staticfiles: /static/: staticfiles/
위 코드의 의미: settings.py가 어디 있는지, Django가 서버와 통신하기 위한 규칙은 wsgi.py를 사용, 사용하는 static파일이 무엇인지
-
배포 후 실행할 명령어
ebextensions/migrate.config
파일 생성후 작성
# .ebextensions/db-migrate.config container_commands: 01_migrate: command: "python manage.py migrate" leader_only: true 02_chown_sqlitedb: command: "sudo chown wsgi db.sqlite3" leader_only: true 03_createsuperuser: command: "python manage.py loaddata users.json" leader_only: true 04_collectstatic: command: "python manage.py collectstatic"
6. EB create
-
생성
-
eb create
-
7. 환경변수 설정
-
사용한 환경변수 적용, aws 사이트에서도 가능
-
eb setenv SECRET_KEY='your_key' AWS_ACCESS_KEY_ID='your_id'
-
8. ALLOWED_HOST 설정
-
CNAME 확인
-
eb status
-
-
settings.py 에 ALLOWED_HOST 추가
settings.py 에서 allowedhost -> '*' 이면 넘어감
9. Deploy!
-
커밋남기기
-
git add .
-
git commit -m "deploy"
-
-
배포하기
-
eb deploy
-
-
마지막 기도하기
출처
'Web' 카테고리의 다른 글
AWS with PuTTY (0) 2019.09.05 PWA - Push Notification (0) 2019.08.02 Service Worker (0) 2019.08.01 Firebase deploy (0) 2019.07.30 [Vue] 페이지 최상단 이동 버튼 만들기 (0) 2019.07.29 -