IT/프로젝트 개발 중 발생한 에러
도커컴포즈 + 스프링부트 + nginx + mysql connection refused
상황 프론트에서 백으로 요청 시 400 에러가 발생했다. Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection 에러와 함께 Connection refused에러도 함께 발생했다. 시도해본 방법 spring.datasource.url=jdbc:mysql://mysql_chu:3303/chuanione?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Seoul mysql_chu는 도커컴포즈의 컨테이너 이름이다. 로컬에서 테스트할 땐 mys..
도커컴포즈 + 스프링부트 + nginx + react 404 에러
상황 로컬에서 테스트를 한 뒤 서버에 푸시를 하고 프론트에서 백으로 요청을 보내면 404에러가 발생했다. 404에러면 url이 잘못된건데 눈씻고 찾아봐도 잘못된 url이 보이지 않았다. 시도해본 방법 굉장히 많은 방법을 시도했지만 기억나는 것만 서술하겠다. package.json에 proxy 추가 "proxy": "http://{스프링 도커 컨테이너 이름}:8080", 또는 서버 url axios경로에는 서버url 설정 baseURL: "http://{url}/api/v1/", nginx.conf location /api { proxy_pass http://백엔드도커컨테이너 이름:8080; 그 외에 도커컴포즈파일들을 이리저리 만져보고 network도 추가해봤다. 최종 docker-conpose.yml s..
DockerCompose + SpringBoot + Mysql Connection refuse에러
상황 도커컴포즈를 사용해서 부트와 mysql을 띄우려고 하니 connection refuse에러가 발생했다. 당시의 코드 docker-compose.yml version: "3.7" services: db: image: mysql:5.7 environment: MYSQL_USER: master MYSQL_DATABASE: chuanione MYSQL_PASSWORD: rnlaufdmlzkfskf! MYSQL_ROOT_PASSWORD: emforhsqhftbvj TZ: Asia/Seoul volumes: - "./db_data:/var/lib/mysql" ports: - "3305:3306" container_name: mysql_chu networks: - backend-network spring-boo..
스프링시큐리티 + JWT 로그인 시 토큰 유효성검사 에러
상황 시큐리티와 JWT토큰을 사용해서 구현하던 중 로그인 시 유효하지않은 토큰이라는 에러가 발생했다. 로그인을 하면 토큰을 발급하고 인증이 필요한 요청에 토큰을 담아서 유효성검사를 하는데 인증이 필요하지 않는 로그인때부터 갑자기 토큰검사를해서 도대체 뭐가 문젠가 싶어서 한참을 헤맸다. 시도해본 방법 시큐리티Config 최하단에 .and() .apply(new JwtSecurityConfig(tokenProvider)); 아래와 같이 돼있는 코드를 addBeforeFilter로 수정하려고 했는데 JwtSecurityConfig안에 이미 addBeforeFilter가 구현돼있었다. 이후 TokenProvider와 로그인시 Service함수에서 수행하는 doLogin등을 다 수정해봤지만 도통 무슨에런지 찾을 ..
스프링시큐리티 401에러와 body가 빈 상태코드 200리턴
상황 스프링시큐리티, JWT를 사용해서 로그인을 구현했다. SecurityConfig와 JwtFilter, JwtSecurityConfig등 필요한 파일을 추가하고 가입과 로그인하면 토큰이 발급되는지도 확인했다. 문제는 .do가 붙지않은 요청을 보낼 때 401에러가 발생했다. 인증이 되지 않아서 발생한 문제고 무엇이 문제인지 확인해보았다. 시도한 방법 로그인해서 발급한 토큰을 postman에 등록했다. tests에 변수를 등록하면 자동으로 등록이 된다는데 임시로 이렇게 했다. 저기 토큰에 들어가는건 로그인했을 때 발급한 토큰을 넣으면 된다. 토큰정보를 담아서 요청을 보냇는데 마찬가지로 401이 떳다. 액세스토큰을 보내면 안됐나?싶어서 리프레시토큰을 담아서 보냇는데도 마찬가지였다. 뭐가 문젠지 한참을 고민..
AWS EC2 서버 이전시 발생한 이슈들 -SQLGrammarException: could not extract Result Set
상황 부트캠프에서 제공해주는 EC2의 기간이 끝났다. 이 서버를 aws 프리티어로 옮기는 과정에서 여러 이슈들이 발생했다. 서버에서 설치한 파일, 설정한 명령어 모두를 기록해놔서 어려움이 없을 줄 알았는데 굉장히 많은 시행착오가 발생했다. 기존과 달라진 것들 프리티어 무료 버전이라는 것과 기존에는 ec2에 mysql을 설치해서 workBench로 연결 후 사용했다면 이번에 옮길 때는 AWS RDS를 연결해서 사용했다. 이슈 1. 프리티어 램 용량 부족 - 자바파일을 빌드하기에 프리티어 램 용량이 부족했다. 램과 ec2저장공간의 메모리 스왑을 해서 이슈를 해결했다.(최대 2기가인데 1기가만 스왑 하니 메모리가 부족했다.) 2. 프론트 빌드 메모리 부족 - 기존에 빌드 방식은 sh파일을 사용해서 npm ru..
SQL 조인 개념
조인은 다른 테이블을 연결할 때 사용한다. 조인조건을 기준으로 두 테이블을 하나로 합친다. Inner Join 서로다른 테이블에 있는 데이터를 가져올 때 사용한다. ex) 특정 게시글에 작성된 댓글내용을 가져온다. 1번 게시글에 달린 댓글내용과 사용자명을 가져오자 SELECT 댓글내용, 사용자명 FROM comments JOIN users ON users.id = comments.id WHERE comments.posts_id = 1 작동방식 JOIN~ON절에서 =기호로 같은 조건인 복수개의 데이터만 남는다. users.id 1, comments.posts_id 1 ~~~ user.id 1, comments.posts_id 2 ~~~~ user.id 1, comments.posts_id 1 ~~~~ us..
AWS EC2 ubuntu 배포 스프링부트 + React
ubuntu에 디비, 엔진엑스, 스프링부트, react를 이용해서 수동 배포를 진행해보자 이 게시글의 1차목표는 인간젠킨스가 돼서 수동 배포를 완료하는 것! ec2를 발급받고 터미널은 ubuntu, 탄력적 Ip를 발급받았다는 기준으로 설명하겠다. 1. ec2 등록 Aws에서 ec2 pem키를 발급받았고 탄력적IP를 등록했다면 MobaXterm을 설치하자 https://mobaxterm.mobatek.net/download.html MobaXterm free Xserver and tabbed SSH client for Windows The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more! ..