분류 전체보기 (56) 썸네일형 리스트형 [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 [.. [Jenkins] 젠킨스에서 Permission denied 에러 발생 젠킨스에서 파이프라인으로 CI 를 구축하고 빌드를 하던 중, 다음과 같이 Permission denied 에러가 발생했습니다. 이 에러의 원인은 젠킨스 컨테이너에서 전송할 때 사용할 권한은 jenkins, 즉 일반 권한인데 Remote Diretory의 권한이 이와 다르기 때문입니다. 젠킨스 서버에서 ls -al 명령어를 통해 확인을 해보면 다음과 같이 ubuntu:ubuntu 권한으로 되어 있는 것을 확인할 수 있습니다. 따라서 위 Remote Directory 의 권한을 젠킨스의 권한과 똑같이 설정해주면 됩니다. 아래의 명령어를 입력하여 설정해줍니다. $ sudo chown jenkins:jenkins server 다음과 같이 jenkins:jenkins 권한으로 변경되었고, 빌드도 잘 됨을 확인할 .. [Jenkins] 깃허브에 없는 파일 젠킨스에 수동으로 업로드하는 방법 젠킨스로 CI 파이프라인을 구축하다가 다음과 같은 에러가 발생했습니다. Node.js 와 파이어베이스를 연동할 때 사용되는 정보들이 담긴 json 파일이 없다고 뜨는데, 깃허브에 올릴 때 gitignore 파일에 포함시켜놓았기 때문입니다. 이렇게 깃허브에 없는 파일들로 인해 젠킨스에서 빌드를 실패하게 되는데, 이런 경우 직접 젠킨스 서버에 접속해 수동으로 파일을 가져와야 합니다. gitignore 파일에 포함시킨 파일들이 많으므로 좀 더 간편하게 Back 단의 server 폴더 자체를 가져오겠습니다. server 폴더가 로컬에 있기 때문에 SCP 를 사용하여 로컬에서 EC2 로 업로드해야 합니다. 1) 프로젝트 경로 확인 먼저, 콘솔창을 확인하면 현재 프로젝트의 경로가 아래와 나옵니다. 젠킨스 서버에서 .. [Jenkins] Jenkins 를 통한 CI/CD 구축 (with Node.js) 젠킨스에서 CI/CD 구축을 위해서는 아이템을 생성해야 합니다. 아이템을 만드는 방법은 FreeStyle 과 Pipeline 이 있는데, 요즘에는 FreeStyle 보다 Pipeline 을 많이 사용하고 있다고 합니다. [ Pipeline 장점 ] 코드로 프로젝트 설정을 할 수 있어 FreeStyle 과 다르게 젠킨스 웹에 직접 접근하지 않아도 설정을 변경할 수 있다. (웹을 통한 설정 가능) CI/CD 파이프라인 설정을 하나의 스크립트 파일(Jenkinsfile)로 프로그래밍을 통해 할 수 있다. FreeStyle 과 다르게 하나의 스크립트 파일(Jenkinsfile)을 통해 흐름 제어를 할 수 있다. 일반 코드처럼 버전 관리가 가능하다. FreeStyle 은 간단한 빌드 및 배포를 할 경우 사용되고,.. [Node.js] express-rate-limit 모듈 사용하기 서버에 DoS (Denial of Service) 공격이 발생해 이용 중인 파이어베이스에 비정상적인 요청으로 인한 불필요한 과금이 발생하는 것을 방지하기 위해 Node.js 모듈 중 express-rate-limit 을 사용해보겠습니다. 터미널에 아래와 같이 입력하여 해당 모듈을 설치합니다. npm install express-rate-limit 단위 시간동안 특정 ip 주소에서 들어오는 request 수를 제한하는 모듈로서, 옵션을 다음과 같이 설정할 수 있습니다. 1) 모든 요청에 대해 적용 var app = require('express'); var rateLimit = require('express-rate-limit'); app.use(rateLimit({ windowMs: 60*1000, //.. 이전 1 2 3 4 5 6 7 다음