클라우드 타입으로 Django, postgreSQL 서버 배포

2023. 8. 9. 22:15· Django/DRF
목차
  1. Django
  2. 외부 패키지 목록 만들기
  3. Settings.py 수정, 환경 변수 분리
  4. cors 추가하기
  5. 정적 파일 경로 지정 및 모으기
  6. 클라우드 타입에 업로드하기
  7. 환경 변수 설정하기
  8. PostgreSQL
  9. 참고
반응형

생각보다 클라우드 타입으로 django와 postgresql을 배포하는 글이 생각보다 없어서 작성하게 되었다. 자료가 없고 처음 배포를 진행하다 보니 이래저래 실수가 많아서 거의 하루를 투자한 것 같아서 그런 사람이 없었으면 하는 마음으로 작성하게 되었다. (사실 클라우드 타입 홈페이지에 다 나와있는데..) 배포할 때 배포할 템플릿을 잘 선택해야 한다!!! 나는 그것이 제대로 안되어 있어서 오래 걸린 것이지만..ㅠㅠ

Django

외부 패키지 목록 만들기

나는 pipenv를 이용하여 패키지 관리를 하였기 때문에 pipenv로 requirements를 만들어주었다.

- 생성된 파일 깃허브에 올리면 클라우드 타입에서 배포를 할때 자동으로 requirements를 찾아서 패키지를 다운한다.

pip freeze > requirements.txt

pipenv freeze > requirements.txt

 

Settings.py 수정, 환경 변수 분리

나는 아래와 같이 구현하였다.

from .base import *
from django.core.exceptions import ImproperlyConfigured


def get_env_variable(var_name):
    try:
        return os.environ[var_name]
    except KeyError:
        error_msg = "Set the {} environment variable".format(var_name)
        raise ImproperlyConfigured(error_msg)


DEBUG = False

ALLOWED_HOSTS = ["*"]

BASE_URL = get_env_variable("BASE_URL")

SECRET_KEY = get_env_variable("DJANGO_SECRET")
STATE = get_env_variable("STATE")

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": get_env_variable("DB_NAME"),
        "USER": get_env_variable("DB_USER"),
        "PASSWORD": get_env_variable("DB_PASSWORD"),
        "HOST": get_env_variable("DB_HOST"),
        "PORT": get_env_variable("DB_PORT"),
    }
}

SIMPLE_JWT = {
    "JWT_SECRET_KEY": SECRET_KEY,
    "ACCESS_TOKEN_LIFETIME": timedelta(hours=1),
    "REFRESH_TOKEN_LIFETIME": timedelta(days=3),
    "ROTATE_REFRESH_TOKENS": False,
    "BLACKLIST_AFTER_ROTATION": True,
    "TOKEN_OBTAIN_SERIALIZER": "user.serializers.MyTokenObtainPairSerializer",
}

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

CSRF_TRUSTED_ORIGINS = ("배포 후 url 등록",)

 

 

cors 추가하기

앱 추가

INSTALLED_APPS = [
	...
    'corsheaders'
    	...
    ]

미들 웨어 추가

"corsheaders.middleware.CorsMiddleware" 와  "whitenoise.middleware.WhiteNoiseMiddleware",
를 추가해주어야하는데, 위치가 중요하다 아래와 같이 해주었다.

MIDDLEWARE = [
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.security.SecurityMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "whitenoise.middleware.WhiteNoiseMiddleware",
]

 

 

정적 파일 경로 지정 및 모으기

import os

STATIC_ROOT = os.path.join(BASE_DIR, "static")

이후 BASE_DIR에 static 폴더를 만든 후 아래와 같은 명령어를 입력해 주면 static 파일로 admin 관련 css, js, img와 기존에 사용하던 css, js, img 파일들이 모이게 될 것이다. 이후 깃허브에 static 파일을 커밋해 주면 된다.

python3 manage.py collestatic

 

 

클라우드 타입에 업로드하기

클라우드 타입에 업로드하는 방법은 클라우드 타입 홈페이지에 자세히 나와있기 때문에 아래의 링크를 통해서 확인하면 좋을것 같다. 환경 변수 설정은 아래에 있으니 같이 보면서 진행하면 좋을 것 같다.

 

https://help.cloudtype.io/guide/python-django

 

Python Django 시작하기

클라우드타입에서 Python Django 애플리케이션을 배포하는 방법입니다. 🧑🏻‍💻 아래의 가이드에 따라 템플릿을 통해 서비스를 배포해보세요. 시간은 3-5 분 가량 소요됩니다. 😺

help.cloudtype.io

 

 

환경 변수 설정하기

Environment Variables가 보일텐데 아래의 명령어를 참고해서 작성하면 된다.

 

환경 변수

DJANGO_SUPERUSER_USERNAME - 슈퍼유저 username

DJANGO_SUPERUSER_PASSWORD - 슈퍼유저 password

DJANGO_SUPERUSER_EMAIL - 슈퍼유저 이메일

- 나의 경우 최초 배포시 admin 계정을 만들어주고 이후 업데이트 시 환경 변수 및 start command에서 superuser 생성 부분을 삭제하고 배포하였다.

 

Pre Start Command

참고로 --settings=weheproject.settings.dev 가 붙는 이유는 나는 setting 파일을 배포용과 로컬용으로 나눠서 진행하였기 때문이다.

 

나의 경우 아래의 명령어로 시작하여 서버 배포를 하였다.

python3 manage.py makemigrations --settings=weheproject.settings.dev && python3 manage.py migrate --settings=weheproject.settings.dev && python3 manage.py createsuperuser --noinput --settings=weheproject.settings.dev

 

이후 DB 서버 배포 후에 아래의 명령어를 통해서 업데이트하였다. 

python manage.py makemigrations user posts skills comments -- settings=weheproject.settings.dev && python3 manage.py migrate --settings=weheproject.settings.dev

 

Start Command

python3 manage.py runserver 0:8000 --settings=weheproject.settings.dev


PostgreSQL

PostgreSQL을 배포하는 방법도 클라우드 타입 홈페이지에 자세히 나와있기 때문에 아래를 참고해서 진행하면 좋을 것 같다. 본인의 경우 몇 시간의 검색을 하다가 유튜브를 통해서 진행하고 홈페이지를 찾게 되었는데.. 아마 유튜브 없었으면 오래 헤매었을 거라고 생각하고 잘 따라 해야 한다.

 

https://help.cloudtype.io/guide/postgres

 

PostgreSQL

클라우드타입에서 PostgreSQL을 배포하고, 관리 툴을 사용하여 TCP 방식으로 접속하는 가이드입니다. 🧑🏻‍💻  본 가이드에서는 관리 툴로 pgAdmin을 사용했으며, 아래의 링크에서 다운로드 받을

help.cloudtype.io

 


재대로 따라해서 배포가 되었다면 아래와 같이 표시가 될것이다.


참고

https://velog.io/@rayleigh_/Cloudetype%EC%97%90-Django-drf-RESTfull-API-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

 

Cloudtype에 Django drf RESTfull API 배포하기

Cloudtype에 Django drf RESTfull API 프로젝트를 배포하는 방법. AWS RDS를 곁들인..

velog.io

 

반응형
저작자표시 (새창열림)

'Django > DRF' 카테고리의 다른 글

DRF Image DB 저장, 스웨거 적용  (0) 2023.10.10
Django 인기글 구현  (1) 2023.09.26
Django의 OneToOneField와 ForeignKey의 차이점  (0) 2023.05.23
Django 모델 관계에 대한 이해 - 양방향 참조와 단방향 참조  (0) 2023.05.23
Django 추상화 클래스  (0) 2023.05.11
  1. Django
  2. 외부 패키지 목록 만들기
  3. Settings.py 수정, 환경 변수 분리
  4. cors 추가하기
  5. 정적 파일 경로 지정 및 모으기
  6. 클라우드 타입에 업로드하기
  7. 환경 변수 설정하기
  8. PostgreSQL
  9. 참고
'Django/DRF' 카테고리의 다른 글
  • DRF Image DB 저장, 스웨거 적용
  • Django 인기글 구현
  • Django의 OneToOneField와 ForeignKey의 차이점
  • Django 모델 관계에 대한 이해 - 양방향 참조와 단방향 참조
Jong_seoung
Jong_seoung
기록하자, 머리는 생각하는 곳이지 저장장치가 아니다.
반응형
Jong_seoung
Today_developStory
Jong_seoung
전체
오늘
어제

블로그 메뉴

  • Home
  • Git Hub
  • 분류 전체보기 (351)
    • Theory (16)
    • Java (3)
      • 알고리즘 (2)
      • 문법 (0)
    • Spring (7)
      • 스프링 입문 (6)
      • PickTalk (0)
      • 에러처리 (1)
    • Python (80)
      • 알고리즘 - 이론 (17)
      • 알고리즘 - 내장함수, 라이브러리 등등 (3)
      • 알고리즘 - 백준 (53)
      • 나도코딩 정리 (2)
      • 기타 (5)
    • Django (159)
      • DRF (105)
      • 인프라 (46)
      • DataBases (2)
      • API Docs (6)
    • FrontEnd (22)
      • htmx (2)
      • React (8)
      • 자바스크립트 (12)
    • GIT (16)
    • 기타 (8)
      • 정리 (2)
      • Flutter (1)
      • 마이크로프로세서 - ATmega128 (2)
      • 개발환경 세팅 (3)
    • 자격증 (37)
      • 정보처리기사 (19)
      • SQLD자격증 (18)

인기 글

최근 글

태그

  • alarm
  • BFS
  • CSRF
  • Django
  • django channels
  • django sse
  • django tutorial
  • django 배포
  • django 스웨거 적용
  • Django 이미지 저장

최근 댓글

hELLO · Designed By 정상우.v4.3.0
Jong_seoung
클라우드 타입으로 Django, postgreSQL 서버 배포
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.