도메인과 SSL 인증서 연결하기(HTTPS 연결) 1. Background 원래는 도메인에 돈을 들이고싶지 않아 그냥 Nginx를 리버스 프록시로 사용한다면, Nginx에서 SSL인증을 처리하도록 구현을 하려했으나 프론트측에서 안된다는 것을 확인하여 도메인을 구입한 후 SSL 인증서를 발급받기로 하였다. 2. DNS 설정하기 구입한 도메인의 DNS 설정에 가서 A레코드를 생성해 내 서버 IP로 연결해야한다. 도메인을 구입한 가비아 사이트에서 진행할 수 있다. 1) 도메인 관리페이지로 들어간다.2) DNS 정보 섹션에서 도메인 연결 > 설정을 클릭한다. 3) 내가 설정하고싶은 도메인 명의 설정을 클릭한다. 4) DNS 설정 섹션에서 레코드 수정을 클릭한 다음, A 레코드를 추가한다. 타입으로는 A,호스트로는 www(서브도메인)와 @(루트도메인을 의미한.. FastAPI 재시작 및 변경사항 적용 1. Background서버에 올려놓은 코드에 변경사항이 생겼을때 최신코드로 반영하면서 서비스를 재시작하는 방법을 알아보자. 2. 서비스 재시작sudo systemctl restart fastapi 3. 서비스 상태 확인sudo systemctl status fastapi 4. 역방향 프록시 설정 (option)Nginx나 Apache를 사용중이라면 설정 변경시 이 서비스들도 재시작이 필요하다. sudo systemctl restart nginx AWS S3에 올린 파일 접근시 AccessDenied 해결 Background - 프로젝트 도중 tts로 음성파일을 만들어 s3 버킷에 올려 프론트로 오디오를 전송해주어야하는 상황. - api 상으로는 s3에 정상적으로 올라간 url이 response body로 전달되는 것을 확인 - 그 url에 접속하면 다음과 같은 AccessDenied 화면이 뜨는 상황 해결방안 - 이미 IAM에 AmazonS3FullAccess 권한을 준 상황. - Amazon S3 > 버킷 > bongabang(해당 버킷 이름) > 권한 > 버킷정책 > 편집 > 정책 생성기 - Select Type of Policy 로는 S3 Bucket Policy 선택 - Add Statements 에서 Effect: Allow, Principal: 아무 이름, Actions: All actions.. [Django] MVT 아키텍처 장고는 MVT아키텍처를 가지고 있다. MVT는 Model View Template로 이루어진 아키택처 패턴인데, 이 구성요소를 하나씩 살펴보자. Model 모델은 DB 구조를 정의하고 DB와의 상호작용을 캡슐화한다. Django는 ORM(Object-Relational Mapping)을 통해 데이터베이스 테이블에 대응되며 이를 통해 따로 SQL을 작성하지 않고 DB작업을 수행할 수 있다. 각 class에 선언된 클래스변수는 테이블의 컬럼에 해당한다. View view는 로직을 담당한다. HTTP로 넘겨진 요청에 따라 처리를 해주는 urls.py에서는 view의 함수를 호출한다. 그러면 view의 함수에서는 DB에 있는 data 중 필요한 것들을 조회하기 위해 model을 호출합니다. 그렇게 해서 얻은 데.. [Django] migration 마이그레이션 마이그레이션은 모델의 변경사항을 관리하는 방법이다. 장고에서 모델은 class로 정의되며 이 class는 Django ORM(Object-Relational Mapping)을 통해 Database table에 매핑된다. 따라서 우리 모델의 데이터필드 type이 변한다던가 모델의 데이터 필드가 한 개 추가된다던가와 같은 모델의 변화가 있을 때마다 데이터베이스 스키마에도 해당 변화를 반영해야 하는데, 이러한 역할을 하는 것이 마이그레이션이다. 따라서 마이그레이션을 데이터베이스와 연결되는 모델의 변경사항에 따라 버전을 관리해주는 것이라 생각하면 된다. Django에서 Migration을 하는 방법 python manage.py makemigrations 이렇게 하면 migrations 하위 폴더에.. [Django] Web Server Gateway Interface(wsgi) 프로젝트 앱 디렉토리에 있는 WSGI는 WebServer Gateway Interface의 약자로 파이썬에서 웹 통신을 하기 위한 일종의 약속이다. wsgi는 웹 서버와 웹 어플리케이션 서버(여기서는 장고)를 연결해 주는 역할을 한다. * 위스기라고 부른다. 웹 서버(Web Server)와 웹 어플리케이션 서버(Web Application Server)는 무슨 차이가 있을까? 웹 서버는 HTTP를 통해 클라이언트에게 요청을 받고, 그 요청에 따라 HTML 문서를 제공한다. HTML 문서를 파싱 하면서 각 태그에 따른 image, css, javascript와 같은 외부 리소스에 대한 추가적인 HTTP 요청을 한다. * HTML과 외부 리소스를 한번에 요청하지 않고 별도로 요청하는 이유는 병렬 다운로드로 .. [Node.js] logout은 꼭 post 메서드를 써야 할까 에러메세지 Layer.handle [as handle_request], logout method 다시말해 logout 라우터가 없습니다. 라는 에러가 떴었다. Layer.handle [as handle_request]를 키워드로 검색했을 때, request를 보내고 response로 응답하는 순서가 바뀌어서 (req, res) 순서를 잘 지켜주면 해결된다는 글을 참고하였지만 내 상황에는 맞지 않았다. 따라서 logout 라우터와 관련한 코드만 눈 빠지도록 찾아봤다. 결론은, logout을 받아오는 메소드가 get이 아닌 post로 써놓는 실수를 했기 때문에 났던 error 였다. 여기서 logout은 꼭 post 메서드를 써야 할까라는 궁금증이 들어 찾아보았다. logout에서는 보통 어떤 HTTP me.. [Node.js] object Undefined Error 에러 메세지 Error: Route.get() requires a callback function but got a [object Undefined] 이 에러 메세지를 해석해보면, Route의 get 메소드는 callback function가 필요했지만, 정의되지 않은 객체가 들어와있어서 오류가 났다. 라는 뜻이다. `정의되지 않은 객체` 라는 말에서 짐작할 수 있듯이 다른 곳에서 불러온 변수를 사용하려고 했을때 오타가 나서 에러가 났을 것이라 짐작했다. 그래서 에러 메시지에서 흰색으로 표시되어있는 page.js 파일에 들어가봤다. 여기서 주목해야 할 부분은 흰색으로 뚜렷하게 표시된 마지막 줄 메세지를 보면 된다. command키와 주소 부분을 함께 클릭하게 되면 저 페이지로 들어갈 수 있어 확인하였다... 이전 1 다음