반응형

안녕하세요.

가상 환경을 설치는 했었는데 실행을 항상 cmd 창을 별도로 열어서 가상 환경 및 파이썬을 실행했습니다.

vsc 터미널에서 파이썬 가상환경을 실행하도록 하겠습니다.

Ctrl + Shift + ` (1옆에 있는 문자) 명령어를 통해서 터미널을 열면 이런 모습입니다.

PS라는 문자와 함께 위치가 나오는에 이 상태에서 가상 환경을 실행하시면 열리지 않습니다.

vsc 터미널에서 파이썬을 실행하기 위해서는 확장 기능을 설치를 해주셔야 되는데요.

왼쪽 확장 기능을 클릭 -> phthon 검색 -> python 설치를 진행해주세요.

 

파이썬 확장 기능 설치를 완료하셨다면 터미널 창을 열어주세요.

터미널 창을 여는 방법은 Ctrl + Shift + p 단축키를 눌러주세요.

python 검색 후 Create Terminal을 선택해주시면 됩니다.

 

처음과는 다른 터미널 창이 열렸습니다.

 

이제는 가상 환경을 실행시켜주시면 정상적으로 가상환경 구동 및 파이썬을 실행시킬 수 있습니다.

 

이제는 별도로 터미널을 실행시킬 필요 없습니다. IDE 내에서 조금 더 편하게 코딩을 하시면 좋겠습니다.

감사합니다 :)

반응형
반응형

파이썬 언어를 손, 발처럼 쓰고 싶으신가요?

그렇다면 연습, 연습 그리고 또 연습밖에 방법이 없지 않을까 싶습니다.

훌륭한 가르침을 받아도 스스로가 연습하지 않고 숙달시키지 않으면 아무 소용이 없습니다.

 

프로그래밍 연습 방법 중 하나가 알고리즘 문제 풀이입니다.

연습의 방법 중 좋은 방법이 알고리즘 문제 풀이입니다. 알고리즘 문제풀이는 프로그래밍 사고를 키워주고 문제풀이를 위해서 선택하신 언어의 숙달과 스킬을 향상해줄 겁니다.

 

알고리즘을 공부하는 법은 이렇습니다.

  • 문제를 이해합니다.
  • 직접 풀어 봅니다.
  • 다른 이들의 코드를 보고 직접 풀어본 코드와 비교합니다.

알고리즘 문제풀이를 하는 유료 강의도 많습니다. 하지만 알고리즘 문제는 직접 풀어보고 고민을 하셔야 됩니다. 알고리즘 문제풀이를 통해서 패스 또는 논 패스가 필요한 것이 아닌 우리는 언어의 숙달과 프로그래밍 사고가 필요한 것입니다.

스스로가 고민하고 고민하고 또 고민하고 직접 타이핑을 해가면서 문제를 해결하는 것이죠.

 

하루, 이틀 한다고 되는 게 아닙니다. 꾸준한 연습이 필요합니다. 그렇기에 마음의 여유를 갖고 오늘부터 연습을 시작하도록 하겠습니다 :)

 

프로그래밍을 처음 시작하는데, 알고리즘을 처음 시작하는데 처음부터 손도 못될 문제들을 만나면 곤란하겠죠.

그래서 추천드리는 사이트는 바로 leetcode입니다.

https://leetcode.com/problemset/all/

 

leetcode는 알고리즘 문제를 제공하는 사이트입니다. 세계적으로 유명한 알고리즘 사이트 중 하나인데 난이도 별로도 정렬을 할 수 있습니다. 문제를 한 문제 한 문제 풀다 보면 우리는 세계 기업들이 특정 수준을 요구하는 프로그래밍 사고도 충족시킬 수 있습니다. 또한 leetcode는 python뿐만 아니라 자바스크립트, 자바, c, c++ 등 무수한 많은 언어로 알고리즘 문제를 풀 수 있도록 지원합니다.

 

이렇게나 큰 이점을 갖고 있는 알고리즘 문제를 순번 별로 문제들을 풀어보도록 하겠습니다.

그렇게 풀어 본 문제가 1.Two Sum 문제입니다.

 

문제를 보고 로컬에서 풀어 봅니다.

한 문제를 풀 때 너무 오랜 시간 동안 고민하지 마세요. 1시간, 2시간 스스로가 정한 시간 동안 고민을 하고 문제를 풀어보세요. 로컬에서 돌려보고 됐다 싶으면 leetcode에서 돌리면 내가 작성한 알고리즘에 대해서 판단을 해줍니다.

 

올바른 답은 없습니다.

단지 더 나은 방법이 있을 뿐입니다. 더 나은 방법이 있으면 배우고 익혀서 사용하시면 됩니다.

하지만 그전에 분명히 자신의 생각이 있어야 되고 직접 문제를 풀어 보셔야 더 많은 걸 배우실 수 있습니다.

그래야 내가 생각한 방법과 더 나은 방법을 비교를 해봐야 성장할 수 있기 때문입니다.

(더 나은 방법을 배우셨다면 스스로 복기를 다시 해보세요)

 

from typing import List

class Solution:
	def twoSum(self, nums: List[int], target: int) -> List[int]:
		idx = 0

		for i in nums:
			find_data = target - i
			idx += 1

			if find_data in nums[idx:]:
				return [idx-1, nums[idx:].index(find_data)+idx]

		if __name__ == '__main__':
			print(Solution().twoSum([2, 7, 11, 15], 9))

위의 문제는 로컬에서 풀면서 작성한 코드입니다.

1문제를 풀면서도 for문, if 문을 사용하고 리스트의 index를 이런 방식으로 찾을 수 있구나 배웁니다.

또한 프로그래밍 사고를 배우게 되는 것이죠.

 

한 문제, 한 문제 문제풀이가 누적이 된다면 분명 엄청난 파워를 갖게 되리라 믿습니다.

오늘부터 알고리즘 문제풀이를 시작해보세요 :)

감사합니다.

반응형
반응형

배포 중 eb init을 사용해서 초기화를 진행했더니 다음과 같은 에러가 발생했습니다.

 

Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization

에러가 발생한 원인은 이전에 엘라스틱 빈스톡을 사용해서 배포를 했던 경우가 있어서 그렇습니다.

프로젝트 루트 위치에서 ./.elasticbeanstalk/config.yml 파일이 존재합니다.

기존의 세팅을 변경해서 사용을 하는 방법이 하나 있고

 

세팅을 다시 시작하고 싶으시다면 다음과 같은 명령어를 입력해주시면 됩니다.

 

eb init --interactive

 

그럼 다시 엘라스틱 빈스톡을 배포 초기화가 진행이 되겠습니다.

 

감사합니다 ^^

반응형
반응형

장고를 aws에 배포를 하도록 하겠습니다.

프로젝트 최초 생성 시에는 쿠키커터를 사용해서 프로젝트를 만들었습니다.

흐름을 파악하고 각자의 환경의 따라서 설정이 차이가 있을 수 있습니다.

 

0. elastic beanstalk 세팅을 위해서 커맨드 명령어인 awsebcli를 설치

pip install awsebcli

설치 eb를 입력하여 설치가 되었는지 확인

 

1. elastic beanstalk 사용을 위해서 프로젝트 초기화

eb init

파이썬 버전, 프로젝트 네임 등 여러 값들을 설정을 진행합니다.

중간에 조금 주의 깊게 봐주셔야 될 것은 aws_access_key_idaws_secret_access_key 설정이 있습니다.

해당 값은 aws 로그인 후 유저 이름을 눌러주세요.

위의 사진과 같이 내 보안 자격 증명으로 이동해주세요. 다음으로 액세스 키 항목으로 이동을 해주셔야 되는데요.

위와 사진과 같이 액세스 키를 누른 다음에 새 액세스 키를 만들기 버튼을 눌러주시면 액세스 키 ID와 시크릿 키를 만드실 수 있습니다. (현재 위의 사진에서는 버튼이 아래에 있어 사진에서는 보이지 않습니다)

 

액세스 키를 입력해줘야 커맨드 창에서 액세스를 할 수 있고, 액세스 키를 여러개 만들어 s3에만 접근한다는지 rds에만 접근한다던지 액세스 키 별로 사용이 가능합니다. 액세스 키를 만들고 로컬 환경에 csv로 저장을 하고 cli에 입력해주세요 :)

 

다음으로 엔터를 눌러 디폴트로 환경 초기화를 진행해주시면 되겠습니다.

 

2. 실제 elastic beanstalk을 생성

eb create

명령어를 입력을 하고 이름과 balancer type을 입력해줍니다.

그리고 생성이 쭉 진행이 되는데, 완료가 되면 aws 사이트(elastic beanstalk 메뉴)에서 honey-lang(프로젝트 네임)이 생성된 모습을 보실 수 있습니다.

정상적으로 생성이 되었으나 해당 URL을 보니 찾을 수 없다고 나옵니다. 

이유는 다음과 같습니다. eb 생성 중 로그를 보시게 되면 WSGIPath를 찾을 수 없다고 합니다.

ERROR   Your WSGIPath refers to a file that does not exist.

 

이유는 현재 eb 환경설정을 보시게 되면 WSGIPath로 application.py를 찾고 있습니다.

aws는 application.py를 찾고 있어 에러가 발생하는데요.

제 환경은 현재 디폴트로 세팅된 환경과 달라서 발생되는 에러입니다.

실제 장고 프로젝트가 구동될 때는 로컬에서는 python manage.py runserver 명령어로 실행이 되나 상용에서는 위와 같이 WSGIPath를 찾아서 실행을 시켜줍니다. 그럼 다음 항목에서 WSGIPath를 설정하겠습니다.

 

3. WSGIPath 설정

WSGIPath 설정을 로컬에서 설정을 하도록 하겠습니다.

프로젝트 소소 코드에 .ebextensions에 폴더를 만들고 10_python.config 파일을 만들어주세요. (폴더와 파일 이름은 규칙이 있습니다.)

다음 코드를 입력해주세요. 본인의 프로젝트 환경의 따라서 wsgi.py를 잡아주세요.

(wsgi 이외에도 세팅 모듈 경로도 추가하는 코드를 작성했습니다. 여기서 코드를 추가하면 eb 프로퍼티를 추가할 수도 있습니다.)

option_settings:
  "aws:elasticbeanstalk:application:environment":
    DJANGO_SETTINGS_MODULE: "config.settings.production"
  "aws:elasticbeanstalk:container:python":
    WSGIPath: "config/wsgi.py"

위의 코드를 입력하고 커밋 후에 eb deploy를 실행해주세요.

다시 URL에 들어가면 에러가 발생했지만 서버가 구동이 된 모습을 보실 수 있습니다. (조금 전에는 서버가 구동이 안 됐습니다.)

4. ec2에 Package 설치

이제부터는 eb logs 명령어를 통해서 직접 하나씩 하나씩 확인을 해보겠습니다. (위의 화면은 로컬에서는 노란 화면으로 debug 모드로 확인이 가능하나, 상용에서는 debug 모드가 False로 되어 있어 로그가 보이지 않습니다. 상용에서도... 보고 싶으시다면 세팅에서 변경 가능합니다.)

-> DEBUG = env.bool("DJANGO_DEBUG", False)

(아래 내용을 먼저 말씀드리자면, 사실 아직 Django가 설치가 되어 있지 않아 아무 동작도 안됩니다.)

 

로그 내용을 확인하겠습니다.

에러 내용은 다음과 같습니다. ModuleNotFoundError: No module named 'django'

장고 모듈을 찾을 수 없다고 합니다. aws에는 장고 관련 모듈을 설치하지 않아 발생하는 에러입니다.

 

장고 모듈을 설치하겠습니다.

파이썬에서 필요로 하는 패키지를 설치하기 위해서는 루트 위치에 requirements.txt  파일을 만들어주세요.

aws가 requirements.txt 파일을 찾습니다.

아래 코드를 입력해주세요.

-r requirements/production.txt

위의 코드는 현재 제 로컬에 있는 패키지 관리를 위한 위치입니다.

다음으로 커밋 후에 deploy를 하면 에러가 발생합니다.

 

ec2에서는 레드햇 계열 리눅스를 사용합니다. 패키지 설치 시 yum을 사용하는데요.

이를 위해서 아래 코드 내용을 작성해주세요.

파일명과 위치는 아래와 같습니다.

# .ebextensions/01_packages.config

packages:
  yum:
    git: []
    postgresql93-devel: []

위의 파일을 추가하고 다시 커밋 -> deploy를 하겠습니다.

 

ps)

내환경에 설정한 파이썬 패키지 추가

pip freeze > requirements.txt

 

5. 프로퍼티 추가 (Environment properties)

deploy까지 되었으나 다음 문제가 또 있습니다.

eb logs를 통해 에러를 확인하겠습니다.

SECRET_KEY = env("DJANGO_SECRET_KEY")

 

장고에서 지정된 DJANGO_AWS_ACCESS_KEY_ID 값이 없어서 발생되는 에러입니다.

장고에서 사용되는 지정된 설정 값들을 모두 설정을 해주셔야 됩니다. (시크릿 키는 장고에서 암호화할 때 필요한 값입니다.)

설정 값들은 깃 헙에 올라가 다른 사람이 보면 안 되는 값입니다.

그렇기 때문에 aws 환경에 직접 세팅을 해주셔야 됩니다.

aws 접속 후 Elastic Beanstalk 메뉴로 이동해주세요.

구성 -> 소프트웨어 -> 편집으로 이동 후 아래로 내려와 환경 속성에 값들을 입력해주시면 되겠습니다.

위의 예는 예시로 보여드리는 예시입니다. 외부로 값을 절대 노출하시면 안 됩니다.

(키 값은 다음 사이트에서 발급받으면 편해요^^ https://miniwebtool.com/django-secret-key-generator/)

 

적용!!

 

지금은 장고 비밀 키 값만 추가를 했는데 settings에 있는 디폴트 값이 없는 DJANGO_AWS_ACCESS_KEY_ID, DJANGO_AWS_SECRET_ACCESS_KEY 등등 설정 값 모두 프로퍼티에 추가를 하셔야 됩니다.

 

프로퍼티를 추가하는 또 다른 방법은 다음과 같은 command로도 설정이 가능합니다.

eb setevn DJANGO_AWS_ACCESS_KEY_ID=

 

필요로 하는 프로퍼티를 모두 추가하겠습니다.

환경에 맞게 필요로 하는 속성들을 추가를 해주시면 되겠습니다.

커밋 후 eb deploy를 하겠습니다.

 

ps)

에러에 대한 전체 로그가 확인하고 싶을 때는 aws에서 다운로드를 하실 수 있습니다.

위의 작업 및 배포 이후에 /var/log/httpd/error_log를 확인하니 

데이터베이스 세팅을 필요로 합니다.

 

6. 데이터베이스 연결 및 세팅

aws사이트에 접속하여 rds 메뉴로 이동해주세요.

 

1) 데이터 베이스 생성

데이터베이스 생성 버튼을 눌러주세요.

저는 postgreSQL을 사용하겠습니다. 그리고 프리티어를 체크해주세요.

다음으로 식별자와 아이디/비밀번호를 세팅합니다.

위의 예시는 예제입니다 :)

사용자에 맞게 설정을 해주시고 꼭 숙지하고 있어 주세요. 이유는 프로퍼티에 추가를 해야 되기 때문입니다.

그리고 아래는 디폴트로 설치를 해주시면 되겠습니다.

 

2) 프로퍼티 설정

EB에 DB설정을 위한 새롭게 추가한 프로퍼티

RDS_DB_NAME -> postgres(사용하는 DB이름)

RDS_DB_USERNAME -> honeydb(사용자 이름)

RDS_DB_PASSWORD -> 패스워드

RDS_DB_PORT -> 포트(디폴트 5432)(설치 후 확인이 가능합니다)

RDS_DB_HOSTNAME -> 디비 엔드포인트

DJANGO_ALLOWED_HOSTS -> 도메인/엔드포인트 (사진에 없으나 꼭 추가해주세요)

 

3) 장고 소스코드 config 내용 수정

프로퍼티를 추가하셨다면 장고가 postgres를 사용할 수 있도록 데이터베이스 관련 설정을 아래처럼 수정하겠습니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': env('RDS_DB_NAME'),
        'USER': env('RDS_DB_USERNAME'),
        'PASSWORD': env('RDS_DB_PASSWORD'),
        'HOST': env('RDS_DB_HOSTNAME'),
        'PORT': env('RDS_DB_PORT')
    }
}

위의 코드는 production 전용입니다.

기존에 사용하는 base.py에 사용하는 코드는 주석처리를 하고 local.py로 분리하였습니다.

 

eb deploy 이후에 사이트에 들어가면 https로 접속을 시도합니다.

현재 프로젝트는 https를 별도로 구입하지 않아서 설정 파일에 security 관련하여 주석처리를 했습니다.

(저는 쿠키커터를 사용했기 때문에 지금은 사용하지 않는 Redis 및 이메일 관련한 설정도 주석처리를 했습니다)

 

4) 인바운드를 열어주기

rds에 접근할 수 있도록 인바운드를 열어줍니다.

rds 서비스로 들어가 해당 db 인스턴스에 들어갑니다. 아래로 가시면 보안 그룹 규칙 있습니다.

보안 그룹 링크를 클릭하고 다시 아래로 쭉 내려가 인바운드를 추가해주세요 :)

 

여기까지 진행을 했다면 기본적인 세팅은 마무리가 됩니다 :)

 

7. migrate 및  static 파일(js, css, image) s3 버킷으로 이동

이제는 로컬에서 마이그레이션 하듯이 서버에서도 마이그레이션 작업을 해주서야 됩니다.

10_python.config 파일에서 container_commands 키워드를 추가해주시면 되겠습니다.

애플리케이션이 시작될 때 자동으로 수행됩니다.

1) migrate 명령어 추가

container_commands:
  01_migrate:
    command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
    leader_only: True

다음으로

migrate 이후에 디플로이를 했습니다. 그리고 어드민에 접속을 했더니 접속은 정상적으로 됩니다.

 

2) collectstatic 명령어 추가(static 파일 s3 버킷으로 이동)

어드민을 보니 디자인이 모두 깨진 모습입니다. static 파일이 없어서 발생하는 문제인데 migrate 아래에 다음과 같은 명령어를 추가해주시면 s3에 static 파일이 복사가 됩니다.

  02_collectstatic:
    command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"

다시 커밋 그리고 배포를 합니다.

s3 버킷에 정상적으로 static 파일이 복사가 되었고, 이제는 어드민 창을 확인하겠습니다.

디자인이 정상적으로 적용이 되었습니다!!!

 

8. 어드민 슈퍼 유저 생성

슈퍼유저 생성 시에도 명령어 수행 및 약간의 코드 추가를 필요로 합니다.

collectstatic 밑이 아래 명령어를 추가해주세요.

  03_createuser:
    command: "source /opt/python/run/venv/bin/activate && python manage.py ebuser"

ebuser라는 파일을 실행시키겠다는 명령어입니다.

ebuser 코드를 작성해주셔야 됩니다. (커밋 내역)

from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model

class Command(BaseCommand):
    def handle(self, *args, **options):
        User = get_user_model()
        User.objects.create_superuser('iamadmin', 'iamadmin@gmail.com', 'adminpass')

유저 모델을 갖고 와서 슈퍼 유저를 생성하는 코드입니다.

커밋 후 디플로이를 해주세요 :)

 

어드민까지 정상적으로 접속되는 모습이 보입니다. (접속 후에 패스워드 변경 필수입니다.)

 

작업 이후에는 위에서 추가한 createuser 명령어와 ebuser.py 파일 내의 계정 정보를 꼭 삭제해주세요.

(작업할 때는 커밋만 하고 이후에는 정보를 지운 후에 rebase나 amend작업으로 다시 커밋 푸시 진행)

 

9. 리액트를 사용하신다면

리액트를 다루신다면 PUBLIC_URL도 꼭 추가를 해주셔야 됩니다.

JS파일이 로컬에 있는 것처럼 보여 발생하는 문제인데요. S3로 경로를 설정해주셔야 됩니다.

장고 어드민 개발자 환경에서 s3 주소를 갖고 와 리액트 환경의 .env에 PUBLIC_URL을 추가해주시면 됩니다.

PUBLIC_URL='https://hello.s3.amazonaws.com'

yarn build 실행!!!

commit 후에 다시 eb deploy!!!

(로컬에서 작업하실 때는 다시 PUBLIC_URL을 풀어주셔야 됩니다.)

 

정상적으로 배포를 완료하였습니다 :)

환경이 달라 조금은 다른 점이 있겠지만 큰 흐름은 이렇습니다.

배포가 생각하는 것처럼 쉽지가 않습니다. 위의 내용을 참고하면서 문제점들에 대한 로그를 보면서 해결하신다면 배포를 하실 수 있겠습니다.

감사합니다 :)

반응형
반응형

안녕하세요.

장고와 리액트를 연동하도록 하겠습니다.

장고 프레임워크를 백엔드로 사용하고 리액트를 프런트엔드 사용하고 있습니다.

장고 서버에서는 rest api를 만들고 리액트에서는 이를 호출합니다.

장고 프레임워크에서는 뷰를 만들지 않고 모든 뷰는 리액트에서 담당하게 되는 것이죠. 리액트(뷰 단) -> 장고(서버 단)로  API 호출을 합니다. 

로컬 주소는 localhost 또는 도커를 사용한다면 서버는 0.0.0.0이 될 것입니다. 포트는 리액트는 3000번, 장고는 8000번을 사용하게 됩니다. 개발할 때는 프런트-서버 모두 구동한 상태로 개발을 하지만 실서버에서 사용할 8000번 포트를 사용하게 됩니다.

우리가 해야 될 것은 1) 개발에 필요한 리액트에서 장고로 API 호출을 할 수 있게끔 만들고, 2) 실제 상용에서는 8000번(장고 서버)만 구동해도 프런트엔드가 나오게끔 만들어야 됩니다.

그럼 작업을 시작하겠습니다.

 

1.

python 패키지 중 django-cors-headers 패키지를 설치해주세요.

django는 자신 이외 다른 도메인이 리소스에 접근하는 것을 허락하지 않습니다. 이를 컨트롤하기 위해서 패키지를 설치하는 겁니다.

pip install django-cors-headers

 

2.

문서의 따라 base.py로 들어가셔서 앱과 미들웨어에 django-cors-headers를 추가해주세요.

## base.py

# app에 추가
INSTALLED_APPS  = [
	...
	' corsheaders ' ,
	...
]

# 미들웨어에 추가
MIDDLEWARE  = [
	...
	' corsheaders.middleware.CorsMiddleware ' ,
	...
]

# 맨 아래 위치에 추가
CORS_ORIGIN_ALLOW_ALL = True

위의 내용들을 설정을 위해서 추가를 해주시면 됩니다 :)

 

3.

다음으로 우리는 8000번(장고)만 구동해도 프런트가 보여야 됩니다. 프런트단에서 빌드를 하게 되면 빌드 파일이 만들어집니다. 빌드 파일 안에는 statice파일이 만들어지는데 이를 장고가 가리키도록 해야 됩니다. 장고가 가리키는 방법은 간단합니다.

base.py 안에 STATICFILE_DIRS = [ ... ] 라인이 있습니다. 여기에 빌드된 프런트 파일을 담아주시면 됩니다.

예시를 들자면 다음과 같습니다.

STATICFILES_DIRS = [
    str(APPS_DIR.path("static")),	# 기존 존재
    str(ROOT_DIR.path('front', 'build', 'static')),	# 추가
]

기존에는 장고에서 생성된 static파일이 있었습니다. 하지만 우리의 프런트를 사용하기 위해서 빌드된 static 위치를 위와 같이 추가로 작성을 해주시면 됩니다.

 

4. 

root URL에 url을 추가를 해주세요.

path("", views.ReactAppView.as_view()),

우리는 프런트에서 만든 경로들을 프런트로 보내주기 위해서 가장 아래쪽 위치 작성을 해주세요.

서버에서 만든 api들은 방금 작성한 코드 위에 위치할 것이고 맨 아래 작성한다면 장고에 없는(매칭이 안 되는) url들은 이곳을 경유하여 view를 호출할 것입니다.

 

5.

위에서 호출할 수 있게끔 뷰 파일을 만들어주세요.

from django.views.generic import View
from django.http import HttpResponse
from django.conf import settings
import os

class ReactAppView(View):

    def get(self, request):
        try:
            with open(os.path.join(str(settings.ROOT_DIR),
                                    'front',
                                    'build',
                                    'index.html')) as file:
                return HttpResponse(file.read())

        except:
            return HttpResponse(status=501,)

작성을 하시면 장고 서버만 구동해도 프런트 쪽으로 호출이 됩니다. (프런트를 빌드 후에 front/build/ 위치에 파일이 있는지 확인을 하고 실행을 시켜주세요.)

 

6.

마지막으로 리액트 package.json 파일에 proxy를 추가해주세요.

"proxy": "http://0.0.0.0:8000",

프런트에서도 3000번에 url이 없는 경우에 8000번으로 연결이 됩니다. (저는 도커로 구동하여 0.0.0.0입니다. 디폴트 구동 시 localhost로 되어 있습니다.)

이를 설정을 해주시면 로컬에서 프런트-서버 api 호출이 가능하겠습니다.

 

이상 없이 서버 구동이 되었으며 8000번 호출 시 프런트엔드 뷰가 보이는 모습을 확인하였습니다.

도움이 되셨으면 좋겠습니다.

감사합니다 ^^

 

 

참고자료

* django-cors-header 패키지

https://github.com/adamchainz/django-cors-headers

 

* Cross-origin Resouce Sharing 설명

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

반응형

+ Recent posts