[ProjectRebuild] SuperFluid 1. 초기 세팅

Alex of the year 2020 & 2021·2020년 8월 19일
0
post-thumbnail

초기 세팅

project/project/settings.py

1) SECRET_KEY, DATABASES는 my_settings.py로 이동

⭐️주의⭐️ DATABASES 수정 시,

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # mysql로 바꿀 것
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # 내가 사용하고자 하는 mysql 내의 DB로 바꿀 것
    }
}

잘 바꾸고 나면 이런 식임

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': -보안,
        'USER': -보안-,
        'PASSWORD': -보안-,
        'HOST': -보안-,
        'PORT': '3306',
    }
}

(참고로 RDS를 미리부터 연동해서 작업했기 때문에 HOST 주소가 꽤나 길었다.)

그리고 정말 중요한 내용, 이렇게 작성한 my_settings.py는
반드시 .gitignore에 포함해야 한다!

2) INSTALLED_APPS:

'django.contrib.admin', 'django.contrib.auth' 삭제 (사용 X)
'corsheaders' 추가 (CORS 관련 이슈 방지)

3) MIDDLEWARE:

'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware' 삭제 (사용 X)
'corsheaders.middleware.CorsMiddleware' 추가 (CORS 관련 이슈 방지)

4) settings.py 맨 하단에 추가할 내용

#REMOVE_APPEND_SLASH_WARNING
APPEND_SLASH = False

##CORS
CORS_ORIGIN_ALLOW_ALL=True
CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

[TIP] **CORS 이슈란
API를 만들 때 가장 염려해야 할 이슈. Cross domain 이슈로 인해 프론트와 백엔드가 합칠 때 CORS 에러가 날 수 있다(둘다 로컬 환경에서 작업한다해도 프론트는 보통 포트 번호 3000을, 백은 보통 포트번호 8000을 사용하기 때문에 다른 서버로 인식한다.) Cross domain 이슈란 바로
보안을 위해 허용된 주소가 아닌 곳에서는 데이터 접근을 못 하게 막는 것**
백엔드 혼자서 작업할 때에는 로컬 컴퓨터에서 작업하기에 동일한 IP를 사용하나, 다른 IP에서의 데이터 접근을 허용해 주지 않으면 에러가 발생
따라서 Cross domain 에러를 방지하기 위해서는 먼저 cors 헤더를 설치하고 이에 맞는 설정을 해야 한다

나의 경우 CORS가 설치 되어 있어서 위에서 바로 초기세팅에 추가했지만, 없을 경우
장고에서 제공하는 CORS를 해결하기위한 패키지를 아래의 명령어를 사용해 패키지를 설치한 후 작업한다.

pip install django-cors-headers

[TIPTIP] CSRF(XSRF) : Cross-site request forgery
웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다. 특정 웹사이트가 사용자를 신용하는 상태를 이용한 공격으로 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.

5) ALLOWED_HOSTS

이 부분은 모두에게 접속을 허용할 경우 ['*']로 바꿔주지만 나는 이번에 혼자 하는 작업이라 따로 건들지 않았다.

6) requirements.txt

이건 나중에 배포할 때 걸리는 문제가 있어서 작성하는 것.
배포할 때에 내가 이 가상환경 내에서 어떤 패키지를 설치했는지를 남에게 알려주기 위한 것.
코드를 처음 전달 받는 사람도 바로 동일한 환경을 구성할 수 있도록 정보를 전달해야 한다.

pip freeze : 현재 가상환경 내에 설치한 모듈/프로그램을 보여줌
pip freeze하여 모든 내용 복사 후 설치된 목록을 requirements.txt에 입력해 줌
cat requiremnts.txt : 제대로 입력됐는지 확인

7) github 연동

여기까지 모두 끝냈다면,
manage.py가 있는 곳에서 git init (이 디렉토리를 git이 가능하게 사용하겠다)
git remote add origin 주소.git (이 디렉토리를 주소.git과 연동하여 사용하겠다)

git add .
git commit -m "커밋메시지"
git push origin master (마스터로 푸시하는 경우는 잘 없지만, 이번에는 초기세팅이므로 마스터로 푸시)



reference:
https://velog.io/@jcinsh/Django-Project-%EC%A3%BC%EC%9A%94-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95 (전반적으로 모두 참고 - 정말 감사합니다)
https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0 (CSRF)

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

0개의 댓글