목록백엔드 (25)
ENN

gcp 인스턴스 생성 및 도커 컨테이너 실행까지 마쳤는데 설정된 백엔드 포트(8080)에 연결이 되지 않는 문제가 발생 tcping 명령어로 확인해보니 아무런 응답이 오지 않음 -> 요청이 filtering된 것으로 예상 따라서 port를 open | closed로 설정해야함 먼저 google cloud platform console 접속 -> vpc 네트워크 -> 방화벽 실행 들어가면 default-allow-... 이런식으로 기본적인 내용들만 작성이 되어있기 때문에 우리가 원하는 포트로 접근할 수 있도록 방화벽을 구성하는 규칙을 만들어야함 방화벽 규칙 만들기에 들어가서 이름 작성 후 아래의 사진과 같이 규칙 세팅 위와 같이 동일한 설정을 한 뒤 포트 번호는 자신이 요청하고자 하는 번호를 입력, 만들기..

JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. 그리고 JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다 JwtFilter.java @RequiredArgsConstructor public class JwtFilter extends OncePerRequestFilter { public static final String AUTHORIZATION_HEADER = "Authorization"; public static final String BEARER_PREFIX = "Bearer"; private final TokenProvider tokenProvider; private String r..

Web Server란? client-web server-WAS-database 이때 Nginx가 web server에 해당 web server : 단순히 정적 파일을 응답 WAS : 클라이언트 요청에 대해 동적인 처리가 이뤄진 후 응답 웹서버를 별도로 운영하는 이유? WAS의 부담을 줄여주기 위해 Nginx의 장점 빠르다 reverse proxy로 사용 가능 load balancing 기능 caching server 기능 보안 효과 SSL 지원 (https://) 웹페이지 접근 인증 압축 비동기 처리 Nginx 사용하기 기본 설정 및 커맨드 $ sudo apt-get update $ sudo apt-get upgrade -y $ sudo apt-get install nginx $ sudo service ..

ENN 블로그 포스팅 중에 Docker에 대한 간단한 설명을 담은 포스팅이 이미 존재한다. 따라서 기존 글과 차별화될 수 있도록 해당 글에서는 Docker를 전혀 모르는 이들도 이해하고 사용할 수 있도록 원론적인 설명부터, 코드 중심의 실용적인 내용까지 폭넓게 담았다. 기본 용어 정리 이미지 특정 프로세스를 실행하기위해 필요한 모든 설정값들은 포함한 캡쳐본 같은 존재 서비스 운영에 필요한 서버 프로그램, 코드, 라이브러리, 컴파일된 실행 파일 등을 모두 포함한다. 컨테이너 이미지를 실행한 상태 응용 프로그램의 종속성과 함께 응용프로그램 자체를 패키징, 캡슐화 하여 격리된 공간에서 프로세스를 동작시키는 기술 가상컴퓨팅과 docker의 차이 가상컴퓨팅은 한 물리적 컴퓨터 안에서 물리적 자원을 나눠서 쓴다. ..

포트 번호란? 인터넷의 전송 제어 프로토콜(TCP)이나 사용자 데이터그램 프로토콜(UDP)에서 애플리케이션이 상호 통신을 위해 사용하는 번호이다. ex) http : 80 https : 443 mysql : 3306 oracle : 1521 / 8080 tomcat : 8080 (오라클과의 포트 충돌로 인해 8090 등으로 자주 변경하여 사용한다.) 프로젝트를 실행하면 현재의 port number를 확인할 수 있다. 톰캣으로 인해 8080 포트를 사용하고 있다. Spring의 서버 포트는 src/main/resources 폴더 아래의 application.properties 파일에서 관리한다. 서버의 포트를 변경하려면 application.properties에 설정을 추가하면 된다. server.port..
doodle 개발 중 자주 보이는 에러들을 정리했다. 1. 4XX 클라이언트 오류로 해당 요청이 올바르지 않다는 의미이다. 400 Bad Request(잘못된 요청) : 요청 자체가 잘못되었을 때 사용하는 코드이다. BadRequest(400) : 이미 친구(Type 1)인 경우 BadRequest(400) : request body 값이 잘못된 경우 (이메일과 아이디가 일치하지 않는 경우) 401 Unauthorized(권한 없음) : 인증이 필요한 리소스에 인증 없이 접근할 경우 발생한다. 이 응답 코드를 사용할 때에는 반드시 브라우저에 어느 인증 방식을 사용할 것인지 보내야 한다. Unauthorized(401) : 로그인 하지 않고 요청 시 403 Forbidden(거부됨) : 서버가 요청을 거부..
controller에서 분명 DTO의 파라미터와 mapper.xml의 값을 같게 사용하였는데 에러가 발생했다. 데이터베이스의 모든 컬럼을 not null로 설정해줬고 필요하다면 default 값도 설정해 놓았는데 생긴 오류였다. 내용) BindingException: Parameter '...' not found. Available parameters are [arg2, arg1, arg0, param1, param2] 위는 컴파일러가 파라미터를 발견을 못해서 생기는 오류로, controller에 @RequestParam("userid")와 같이 직접 파라미터 명시를 해줘야 한다. @PostMapping("/users/login") public void postlogin(@RequestParam("use..

스프링부트는 다양한 레이아웃이 가능하지만 보편적으로 아래 그림과 같은 아키텍쳐를 기반으로 설계한다. 이에 따른 doodle의 디렉토리 구조이다. 1. src/main/java 자바(.java) 파일이 모여있는 곳으로, 스프링부트가 MVC 패턴의 서블릿 구조를 잡아주기 때문에 따로 서블릿을 만들 필요 없이 스프링 구조에 맞게 패키지와 클래스 파일들을 생성해 작성하면 된다. 기본적으로 controller, service, dao가 여기에 포함된다. 2. src/main/resources 자바 클래스에서 사용하는 리소스들을 보관하는 곳이다. DB 연결을 위한 자원, 의존성 주입을 위한 xml 파일 등 자바 코드 외 모든 자원은 이곳에 넣어주면 된다. 3. build.gradle pom.xml에 여러 개의 de..