본문 바로가기

Back-End

(19)
[Jenkins] 젠킨스를 이용한 스프링 부트 CI/CD (feat. EC2) 스프링 부트 서버를 EC2 서버를 사용하여 구축하고, 서버를 실행시킬 때마다 EC2 인스턴스에 접속하여 명령어를 입력해야 하는 것이 불편해서 젠킨스를 이용해서 스프링 부트 서버의 CI/CD 를 구축하려고 합니다. 이 글은 EC2 서버 구축이 모두 완료된 상태에서 진행합니다. EC2 서버 구축은 아래의 이전 포스팅을 참고해주세요 :) [AWS] AWS EC2 에 스프링 부트 프로젝트 배포하기 (feat. MySQL) 현재 스프링 부트 프로젝트를 하고 있는데, AWS EC2 에 배포하려고 합니다. AWS 에 계정을 만들어놓은 상태이고, 스프링 부트 프로젝트를 AWS 서버에 올려보겠습니다. 1. EC2 인스턴스 생성하기 1) EC2 jeinie-developer.tistory.com 1. 젠킨스 설치 현재 사..
[Spring Boot] AWS S3 로 이미지 업로드하기 AWS EC2 서버를 사용하면서 이미지 처리를 위해 AWS 에서 제공하는 S3 를 사용하려고 합니다. S3 (Simple, Storage, Service) 는 AWS 에서 제공하는 인터넷 스토리지 서비스입니다. 그럼 S3 버킷을 만들어보겠습니다. 1. S3 버킷 만들기 1) AWS 에 접속하여 S3 를 검색한 후, 아래와 같이 버킷 만들기 를 클릭합니다. 2) 아래 화면에서 버킷 이름과 리전을 입력합니다. 3) 객체 소유권은 그대로 두고, 퍼블릭 액세스 를 아래와 같이 설정해줍니다. '모든 퍼블릭 액세스 차단' 을 해제한 다음, ' 새 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단' 을 선택해줍니다. 4) 버킷 버전 관리와 기본 암호화를 비활성화 로 선택해준 ..
[AWS] Failed to connect to service endpoint 에러 (feat. Spring Boot) 스프링부트에서 AWS S3 를 사용하기 위해 aws 에 사용하는 애플리케이션을 연동했는데 아래와 같은 에러가 발생했습니다. 위의 에러 발생 원인은 spring-cloud-starter-aws 의존성을 주입할 때, 로컬환경은 aws 환경이 아니기 때문에 발생하는 에러입니다. 에러를 해결하기 위해서 SpringBootApplication 에 적용시키면 됩니다. @SpringBootApplication( exclude = { org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration.class, org.springframework.cloud.aws.autoconfigure.context.ContextStackA..
[Spring Boot] Json 과 MultipartFile 한 번에 전달받는 API (feat. Postman) 커뮤니티 게시글을 등록하고 조회하는 API 를 개발하는 도중, 게시글에 업로드할 이미지에 대한 로직을 추가하는 과정에 대해 기록해보려고 합니다. 1. @RequestPart 게시글의 제목, 내용 등은 Json 형태로 서버로 보내주기 때문에 아래와 같이 @RequestBody 로 해주었습니다. 하지만 이미지 파일을 받아오려면 몇 가지 변경해야할 부분이 있습니다. @PostMapping("/post") public ResponseEntity createPost(@Valid @RequestBody ExchangePostDTO exchangePostDTO, BindingResult bindingResult, HttpServletRequest request) 이미지를 받아오기 위해 MultipartFile 을 추..
[AWS] AWS EC2 에 스프링 부트 프로젝트 배포하기 (feat. MySQL) 현재 스프링 부트 프로젝트를 하고 있는데, AWS EC2 에 배포하려고 합니다. AWS 에 계정을 만들어놓은 상태이고, 스프링 부트 프로젝트를 AWS 서버에 올려보겠습니다. 1. EC2 인스턴스 생성하기 1) EC2 인스턴스를 생성해보겠습니다. AWS 에 접속하여 로그인 후, EC2 대시보드로 들어갑니다. 2) 인스턴스 탭을 클릭한 후, 우측의 인스턴스 시작 버튼을 클릭합니다. 3) 이름을 입력하고, 필자의 경우 Amazon Linux2 AMI (HVM), SSD Volume Type 인스턴스를 선택했습니다. 3) 인스턴스 유형은 아래와 같이 선택하였습니다. 4) 키 페어 (key_pair) 생성하기 위해, 새 키 페어 생성 을 클릭합니다. 키 페어는 SSH 터미널로 인스턴스에 접근할 때 반드시 필요한 ..
[Spring Boot] Spring Security 사용 중 Swagger 401 에러 페이지 회원가입을 구현할 때까지만 해도 잘 나왔던 swagger 페이지가 로그인 구현을 한 후에는 401 에러 페이지가 나옵니다. 로그인을 구현하기 위해 서버에 Spring Security 를 적용하였는데, Spring Security 는 권한 부여를 위한 Role 이라는 개념을 사용하기 때문에 Swagger 에 접근할 수 있는 Role 을 정의하고, 해당 Role 을 가진 사용자만 Swagger 에 접근할 수 있게 합니다. 이를 해결하기 위해서, Spring Security 에서 Swagger 에 해당하는 url 을 무시하도록 설정하면 됩니다. Spring Security 에서 해당 url 을 무시하도록 설정 아래와 같이 spring security 룰을 무시하게 하는 url 규칙을 설정합니다. public ..
[Spring Boot] Swagger 연결 시 'Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException' 에러 발생 스프링 부트에서 프로젝트를 생성 후 Swagger 를 연결하고 있었는데, 아래와 같은 에러가 발생했습니다. 에러 내용은 다음과 같습니다. org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException Spring boot 2.6 버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_pattern_parser 로 변경되면서 몇몇 라이브러리에서 오류가 발생하고 있었던 것입니다. 따라서, application.properties 파..
[Spring] Spring Tomcat 10 실행 시 에러 (java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener) 맥북 터미널에서 Homebrew 로 tomcat 을 설치한 후 Spring 프로젝트를 실행했는데, 다음과 같은 에러가 발생했습니다. 에러의 원인은 Tomcat 의 버전이 10 이었기 때문이었습니다. Tomcat 10 은 모든 패키지의 이름을 javax.servlet 에서 Jakarta EE 9 의 일부인 jakarta.servlet 으로 바꿨는데, 스프링 부트나 스프링 프레임워크에서는 Jakarta EE 9 를 지원하지 않는다고 합니다. 자세한 에러 설명은 아래 링크를 참고해주세요. Tomcat 10.x throws java.lang.NoClassDefFoundError on javax.servlet.* Deployed servlet based web application at context path [..