[GCP] 인증서 관리자를 이용한 SSL 인증서 발급 및 적용
·
프로젝트
인증서를 발급하기 위해서 인증서관리자 항목 인증서와 기존 인증서의 차이를 이해하고 각각의 어떤 역할을 하는지 정확히 알고 어떻게 https를 연결할 수 있는지 작성을 하였다. 원래는 기존 인증서만을 통해서 SSL 인증서 만들기로 인증서를 만들었지만 도메인에 인증서 상태가 fail로 나타나고 인증서에 인증서 추가를 통해 인증서를 발급받았지만 ssl 인증서가 아니라 로드 밸런서에서 인식을 못 하기에 각 인증서의 역할과 이해가 부족해서 문제가 발생하게 되었고 문제를 해결한 방법에 대해 블로그로 정리를 해보았다.1. 인증서 발급 및 적용인증서 관리자에서 인증서에서 인증서 추가를 통해 도메인을 인증 받습니다.DNS 레코드를 추가하여 도메인 소유권을 인증하도록 합니다. 이때 CNAME 레코드가 정상적으로 작동하면 ..
웹소켓 Operational Error : database timeout or blocking
·
프로젝트
웹소켓은 비동기 방식으로 여러 클라이언트의 요청을 처리합니다. 그러나, 비동기 메서드에서 동기적 ORM 쿼리를 직접 호출하면 현재 스레드가 블로킹되고, 데이터베이스의 응답을 기다리며 다른 요청을 처리하지 못하는 상황이 발생합니다. 이로 인해 데이터베이스 타임아웃이나 차단(blocking) 문제가 발생할 수 있습니다. 웹소켓에서 OperationalError: database timeout or blocking에 에러가 발생하는 이유는 Django ORM이 기본적으로 동기적이기 때문이다. 비동기 환경에서 Django ORM을 동기적으로 사용할 경우 성능 문제와 데이터베이스 타임아웃 혹은 차단이 발생할 수 있다.# from django.contrib.auth import get_user_model# asyn..
웹소켓 포트 충돌 문제
·
프로젝트
사용한 기술 : redis, channels, daphne프로젝트에서 채팅 시스템은 Django Channels과 WebSocket을 사용하여 구현되었고 daphen 서버와 Redis를 통해 비동기적인 실시간 통신을 처리하였다.채팅 시스템을 구현하는 동안에 테스트 진행을 위해 postman을 이용해 WebSocket Request를 선택하여 WebSocket 서버를 연결하여 메세지를 전송하는 방식으로 진행하였다.문제점ws://localhost:8000/ws/chat//  서버를 연결하려고 시도 했으나 404 Not found 와 함께 서버를 찾을 수 없다는 오류로그를 확인할 수 있었다.오류 로그를 통해 웹 검색을 해본 결과 같은 8000포트로 HTTP 요청과 WebSocket 요청을 같이 진행할 경우 충..
Docker 네트워크 오류
·
프로젝트
프로젝트를 진행하는 중에 http://127.0.0.1:8000/의 로컬 호스트가 사용이 차단되는 문제가 발생되었다.Django 애플리케이션 로컬호스트에 접근하는 URL은 http://127.0.0.1:8000/으로- 127.0.0.1은 로컬호스트를 의미- 8000은 Django의 기본 개발 서버가 사용하는 포트 번호  도커 이미지를 빌드하고 docker-compose로 서버를 실행하여 도커 환경을 구성하게 되어 도커 환경에서는 컨테이너가 독립된 네트워크 환경을 가지기 때문에 호스트 컴퓨터와 직접적으로 연결된 127.0.0.1을 사용할 수 없게된다.그러기 localhost, 0.0.0.0 의 IP 주소를 권장한다.settings.pyALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS..
OpenAI 연결 방법
·
프로젝트
이번 프로젝트에 AI를 이용하기 위해 AI 모델을 학습 시키기 위해 데이터를 수집하고 전처리하는 시간이 필요하기에 이미 학습된 모델을 제공하는 Open AI를 이용하여 프로젝트 개발 속도를 높이는 것이 실용적이다 생각이 들었다. API KeysOpenAI를 이용하기 위해서는 API Keys가 필요하다. "Create new secret key" 버튼을 클릭하여 새로운 API 키를 생성하고 생성된 API 키를 복사해 .env같은 파일에 변수 저장하는 것이 좋다.OpenAI 패키지 설치openai 패키지를 자신의 환경에 맞게 설치하도록한다. 저는 Docker를 이용하기에 requirements.txt에 패키지를 하기에 새로 openai를 추가하였다.코드services.pyimport openaiimport ..