본문 바로가기

분류 전체보기

(14)
[BE] 5. 회원 정보에 들어갈 프로필 사진 API 만들기 (AWS / multerS3) 기본적으로 처음에 계획했던 기능 구현을 마치고, 여유 시간이 조금 남아서 다른 기능도 추가해보기로 했다. 여러 기능들 중에서 회원 정보에 들어갈 프로필 사진을 등록하는 API를 만들어보기로 하였다. 1. 배포 서버에 사진을 저장하고 DB에는 경로 저장하기 맨 처음 구상했던 방법은 배포 서버에 저장하는 로직으로 수행하고, DB에는 그 경로를 저장하여 조회 요청을 하면 불러오는 식으로 만들어 보려고 했다. import multer from 'multer'; import path from 'path'; import dotenv from 'dotenv'; dotenv.config(); const upload = multer({ destination(req, file, cb) { cb(null, 'public/i..
[BE] 4. HTTPS 적용하기 서버에 배포를 진행한 뒤 프론트에서 요청을 보냈을 때 CORS 에러가 발생하였다. 원인을 알고보니 크롬 업데이트로 인해 sameSite 정책이 변경되어서 발생하는 것이었다. 이를 해결하기 위해서는 다양한 방법이 있지만 제일 흔한 해결 방법은 https를 적용하는 것이었다. 프로젝트를 진행하면서 도메인을 구매하고 적용시켜보는 것까지 해보고 싶었기 때문에 이 방법을 택하게 되었다. 1. 도메인 구매 - 무료 도메인과 같은 방법도 있지만, 이왕이면 만드는 사이트와 잘 맞는 도메인을 사용하고 싶어 구매하게 되었다. 사이트는 가비아를 이용하였다. 2. Route 53에서 도메인 인증하기 - AWS에서 제공하는 Route 53으로 도메인 영역을 만들어주었다. 이 기능을 사용하면 0.5불 정도의 요금이 청구되는데, ..
[BE] OpenAI 401 Error 해결 [문제] ChatGPT에게 질문을 하는 API를 사용하면 401 Error가 떴다. 문제는 local에서 했을 때는 아무 문제가 없었는데 배포한 뒤에 발생한 문제였다. [해결] 환경변수가 설정이 되어 있지 않아서 발생 - local에서는 .env 파일에 저장하고 process.env.{변수명} 이런 식으로 사용했다. 그치만 .env는 gitignore로 처리했기 때문에 jenkins가 github에서 파일을 가져오면 env 파일에 담긴 환경변수들이 없다는 뜻이 된다. ① EC2 서버에 env 파일을 설정 - 이 방법 같은 경우에는, jenkins 안의 docker에서 이미지가 빌드되고 사용되기 때문에 아무런 연관성이 없어 실패했다. ② .env 파일을 그냥 git에다가 같이 업로드 - 일단 임시방편으로 ..
[BE] CI/CD / 배포 / webhook 1) jenkins 설치 및 jenkins 컨테이너에 docker-ce 설치 - 현재 구조가 EC2 서버에 docker로 jenkins를 설치했다. 그리고 나서 jenkins를 통해서 이미지 빌드 및 컨테이너 생성 작업을 하는데, jenkins를 통해서 해야 하기 때문에 jenkins 안에 docker를 설치를 해주어야 한다. 이 점을 간과하였고, 그래서 결국 전에 만든 jenkins 컨테이너를 지우고 다시 설치했다. \ - jenkins 이미지를 통해 컨테이너 설치 docker run -p 8180:8080 -v /var/run/docker.sock:/var/run/docker.sock --name jenkins jenkins/jenkins:lts - root 접속 docker exec -it -u r..
[BE] CI/CD 도전! 1. container 설치 docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init 했더니 오류가 아래와 같이 나왔다. WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested 그래서 검색했더니 --platform linux/amd64를 추가로 적어줘야..
[BE] Docker 용량 문제 1. Docker 용량 확인 기본 경로 확인 → 디스크 용량 확인 → 필요 없는 파일 삭제 내 경우에는 overay2 폴더가 거의 90프로의 용량을 차지하고 있어서 이걸 해결하고자 했다. 정리했지만 그렇게 많이 줄지 않아서 결국 EC2 EBS 용량을 늘리기로 했다. 기본 경로 확인 docker info | grep "Docker Root Dir" 디스크 용량 확인 du -sh */diff/tmp | sort -nr 필요 없는 파일 삭제 docker system prune -a -f [참고 1] https://ngela.tistory.com/90 [참고 2] https://confluence.curvc.com/pages/releaseview.action?pageId=109642597 2. AWS EBS 용..
[BE] 3. Jenkins CI/CD 세팅 [참고 1] https://velog.io/@imsooyeon/Jenkins-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8Job-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%9E%90%EB%8F%99-%EB%B0%B0%ED%8F%AC-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0 [참고 2] https://2mukee.tistory.com/267 [참고 3] Credential 오류 해결 - https://be-developer.tistory.com/14 [참고 4] https://velog.io/@anna_developer/Docker%EC%99%80-Jenkins%EB%A1%9C-CI-CD-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%..
[BE] 2. Node.js+Ngrok - CORS 오류 해결 아직 배포 자동화를 설정해놓지 않아서 그동안 프론트에서 API를 사용할 때는 Ngrok을 사용하기로 했다. Ngrok은 외부에서 로컬에 접속할 수 있게 해주는 터널 프로그램이다. 이걸 이용하면 돈을 쓰지 않고도 외부에서 localhost를 사용할 수 있게끔 해준다. 설정은 아래를 참고했다. (출처) https://yunwoong.tistory.com/131 Ngrok을 실행하고 Postman으로 했을 때는 문제없었다. 그런데 직접 프론트에 적용해서 하려고 하니 CORS 오류가 발생하였다. 이런 오류가 발생해서 원인을 찾아 해결하고자 했다. 1) CORS 모듈 설치 후 코드 작성 먼저 처음에는 아래를 참고해서 설정했다. (참고) https://surprisecomputer.tistory.com/32 저번 ..
[BE] 1-2. chatGPT API 제작 과정 1) Forgien Key의 굴레,, 테이블을 대충 구상하고 나서 이제 실제로 구현할 차례인데, 다른 건 구현을 했는데 Forgien Key가 고비였다. 제대로 연결이 되었는지도 확인이 안되고, 내가 본 자료에서는 Forgien Key를 따로 해당 Schema에 추가하지 않았는데 어떻게 값을 추가할 수 있는지가 의문이었다. 이걸로 며칠을 고민했는지,,,, 아무튼 해결한 것은 다음과 같다! 이게 올바른 사용법인지는 모르겠으나, 잘 뜨니 일단은 사용해본다. 이후 다시 공부해볼 예정! 1. 시퀄라이즈로 FK 설정하는 법은 다양한 사이트를 참고하여 진행하였다. 아래의 출처를 많이 참고하여 사용하였으며, index.js 파일에 모두 작성하는 것으로 진행하였다. (출처1) https://devlog-wjdrbs96..
[BE] 1-1. chatGPT API 제작 과정 1) openai chatGPT 사용 (출처1) https://happyguy81.tistory.com/180 (출처2) https://kunheelib.github.io/nodejs/start-openai-api/ 400 bad requests가 자꾸 떴음,, 다른 코드 복붙한 뒤 코드 추가로 해결했는데 아마 어디에 오타가 있었던 것 같다! 401 : apikey가 잘못되었을 때 - 최대 token 수 : 4097 → 한 질문의 최대 token 수라는 말도 있고, 전체 대화 목록의 최대 token 수 라는 말도 있다,,, → 이 이상이 되면 요금이 청구되는 것 같음 (출처) https://velog.io/@noh0907/ChatGPT-API-Token-Limit-%ED%95%B4%EA%B2%B0%ED%..