TIL - 0326~0330

0326

오늘 할 일

  • 페이스북 로그인 기능 복습(일요일에 다 못했던 부분까지)!
  • EC2 Deploy 정리 및 복습(RDS까지 완료)
  • TDD 6장까지 실습 하기

과제

  • 테스트 `.credentials(**kwargs)` 참고해서 하기

Increasing the amount of inotify watchers

  • bundle exec jekyll server 실행했는데 오류가 발생했다. 아래 사이트 참고해서 오류 수정!
  • 수정 사이트 https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

RestDjango test

  • API Client
  • 기능 테스트 ->
  • 단위 테스트 -> APIRequest
  • APITestcase를 사용

0327

오늘 한 일

  • aws route53 -> 호스팅 닷컴 네임 변경

오늘 할 일

  • EC2,Docker 영상보고 정리 및 구현
  • 도메인까지 붙이기

Default Storage

  • Storage 에 업로드를 통해 저장 된 파일을 불러오는데 사용한다.
from django.core.files.storage import DefaultStorage

storage = DefaultStorage()
# 자동으로 storage에 저장된 파일을 불러온다. 예로 S3에서 가져올때도 해당
# upload_to 경로/ file_name
storage.open('artist/cat.png')
f = storage.open('artist/cat.png')
result = f.read
len(result)

filecmp.cmp

  • 파일 내용을 비교하려고 사용
  • 파일 경로를 받기 때문에, 메모리상의 임시파일을 파일시스템 상의 임시파일로 생성해줘야 한다.
  1. os.path.join(settings.STATIC_DIR, <경로>)를 사용해서 로컬의 STATIC_DIR에서 파일객체를 생성(open) 생성한 파일객체로 Artist를 생성

  2. settings.DEFAULT_FILE_STORAGE에 해당하는 Storage클래스 인스턴스를 가지고 해당 인스턴스의 open()메서드로 생성된 Artist.img_profile에 접근해 FileField

도메인

Client -> [EB] ELB(로드밸런서) -> EC2 / EC2

SSL 인증 사용자 - 브라우저 - (?) - 서버

AWS에 SSL인증서를 추가할 경우 https : 443 Route53 - DNS ACM - SSL 발급 및 관리

커스텀서버에 SSL인증서를 추가할 경우 Let’s Encrypt - SSL 발급 기관 그러나 관리는 알아서/ 3개월마다 갱신을 해야함

로컬 호스트의 경우 개인적을 ssh 인증을 받고 이걸 구글에 신청하면됨

if($http_x_forwarded_proto = ‘http’){ return 301 https://$hosts$request_url; }


0328

오늘 한 일

  • EB_docker 강의 보고 정리
  • eb 프로젝트에 travis 추가하기

settings 변수 선언

config/settings 의 경우 전역적으로 변수를 사용하기 위해선 대문자로 변수를 선언해서 사용해야 한다. 이부분은 좀 더 알아보자

travis

  • 커밋단위로 테스트를 해줌
  • https://docs.travis-ci.com/user/languages/python/
  • eb 헸단 것처럼 secret을 먼저 보내야 한다. 이때 암호화를 해서 보내야함.
  • git ignore 추가
tar -cvf secrets.tar .secrets
<!-- 암호화  -->
travis encrypt-file secrets.tar
<!-- travis.yml에 명령어가 추가 된다.덮어씌우기 yes눌러야 한다. -->
travis encrypt-file secrets.tar --add
ForkRefo <- OriginRefo

Local
  Origin      - > ForkRefo
  upstraem    - > OriginRefo

변경사항 받으려면
git fetch <저장소명>


git fork
git remote

circleci


0329

오늘 한 일

  • eb docker 배포 완료!!! -> 도메인이랑 travis까지 달기
  • cron 실행

내일까지 할 일

  • User model로 email sign_up, login api view로 만들어보기

Cron

  • 주기적으로 작업을 할 때 사용되는 소프트웨어
  • 쉘 명령어로 구성되어있다.crontab 파일에 의해 작동된다. 사용자마다 crontab이 생기기 때문에 각 사용자마다 다른 명령을 내릴 수 있다.
  • /2 짝수번째 , 13-15(1시에서3시까지

0330

오늘 한 일

  • Celery , redis

오늘 할 일

  • 회원가입 모델링 다시하고 test까지 진행하기

유용한 사이트

  • Django Packages : 튜토리얼 해보고 사용해보는 것도 좋음
  • AWS 이메일 보내는 것도 사용해도 좋을듯 (6만2천건 무료)
  • 처음으로 시작하는 파이썬, TDD 인증 한번 보자.

할 일

  • 일요일 복습합시다!!! »
  • 프로젝트의 경우 크롤링해서 데이터 넣자!!!

Celery

  • Celery : 분산 작업 대기열
    문서
    비동기적으로 진행하는 것
    cron + celery
  • Betteries included : 필요한 소프트웨어가 함께 포함 되어있다.
Django-EC2 - celery
Django-EC2 - celery   --------- Broker Server(redis/ElastiCache) ----------------
Dajgno-EC2 - celery

Django -> broker server -> workers를 가지고 있음 , CELERY 일 가능한지 물어봄 -> Celery

EB
    ELB  <- SSL (HTTPS), Domain(Router53)

        - EC2 - Django, Celery
        - EC2 - Django, Celery
        - EC2  - Django, Celery
---
RDS, S3, ElastiCache(Redis):외부에서 접근이 불가능함. 로컬에서 도커사용, ec2에서 해야함
---

Sentry , Travis -CI

---

동작 방식
worker 명령 -> redis -> celery

  • result 는 기본적으로 따로 설정을 해줘야 볼 수 있다.
  • woker 내용이 바뀌면, redis도 껐다 다시 켜야 한다.

Django_celery

Dajgno_celery