Spring

    [Spring] AWS S3 서비스를 사용하여 이미지 업로드

    1. 버킷 생성 설정한 후 버킷을 생성해준다. 권한 탭 > 버킷 정책 > 편집 Principal은 *, Actions는 DeleteObject, GetObject, PutObject 를 선택해주고, ARN은 이전 페이지에 있던 ARN을 복사해서 붙여넣는다. Add Statement를 클릭하면 Generate Policy를 통해 정책을 생성하자. 생성된 JSON 타입 정책을 이전 페이지에 붙여넣으면 된다. CORS 설정하는 경우는 많지 않았지만, 그래도 혹시 모르니 미리 설정하기로 했다. [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "HEAD", "GET", "PUT", "POST" ], "AllowedOrigins": [ "*" ], "ExposeHeader..

    [Spring] EC2 서버 실행 시, Web server failed to start. Port 8080 was aleady in use 해결

    EC2에서 jar 파일을 실행했는데 8080포트가 이미 사용 중이라며 실행되지 않았다. 8080포트를 사용하는 프로세스를 종료시키기 위해 cmd를 관리자 권한으로 열고, 다음을 입력했다. > netstat -ano 어디에도 8080 포트는 보이지 않았다... 8080 포트만 지정해보아도 아무것도 뜨지 않았다. > netstat -ano | findstr 8080 만약 찾으려는 포트가 있다면 다음 명령어를 통해 강제 종료해주면된다. > taskkill /f /pid PID번호 컴퓨터 재부팅을 하고 다시 jar 파일을 실행시켜 보았지만 여전히 8080 포트를 사용 중이라고 한다... 리눅스에서 특정 포트를 사용 중인 프로세스를 출력할 수 있는 명령어를 찾아, cmd가 아닌 EC2에서 입력해보았다. > sud..

    [Spring] EC2 Connection Time 지정

    클라이언트에서 요청이 없으면 서버의 접속이 끊긴다. 연결을 유지하는 방법을 알아보자. $ sudo vi /etc/ssh/sshd_config 아래로 쭉 내리면 ClientAliveInterval과 ClientAliveCountMax 부분이 있다. 이 두 가지를 수정해줄 것이다. 우선 i를 눌러 입력 모드로 전환하고, 수정해주자. 그런 다음 ESC를 눌러 명령 모드로 전환, :wp 를 입력해 저장후 빠져나오면 된다. 필자는 다음과 같이 변경했다. #ClientAliveInterval 600 → 클라이언트가 살아있는지 확인하는 간격, 확인을 위해 더미 정보를 보낸다. #ClientAliveCountMax 6 → 클라이언트가 응답이 없어도 접속을 유지하는 횟수 위와 같이 설정하면 10분 마다 연결 확인을 위해..

    [Spring] SpringBoot EC2에서 AWS RDS MariaDB 연동 및 배포

    SpringBoot 프로젝트를 EC2로 배포하고 AWS RDS MariaDB를 연결해서 실행되는 것까지 확인할 것이다. 1. 인스턴스 생성 1) 인스턴스 생성 키페어를 새로 생성해주었다. 스토리지는 무료 최대 사이즈인 30으로 설정하고 생성해주면 된다. 2) 인바운드 규칙 편집 MariaDB는 MYSQL/Auroa 유형으로 설정해주면 된다. 3) 탄력적 IP 설정 인스턴스를 중지했다가 다시 실행해도 IP가 변경되지 않도록 탄력적 IP를 설정했다. 설정하지 않아도 무관하다. 나중에 인스턴스를 삭제하면 탄력적 IP도 삭제해주도록 하자. 기본 설정 그대로 할당했다. 연결된 인스턴스 ID가 비어있다. 연결시켜 주자! 이 탄력적 IP 주소 연결 클릭한다. 이전에 생성한 인스턴스를 선택해준다. 2. AWS EC2 ..

    [Spring] AWS RDS MariaDB 생성 및 SpringBoot 프로젝트 연동

    AWS RDS MariaDB를 생성해 스프링 부트와 연동해보자. 1. AWS RDS MairaDB 생성 데이터베이스 생성 버튼을 클릭하고 MariaDB를 선택한다. 템플릿은 프리티어, 식별자는 원하는대로 작성하면 되고, 마스터의 사용자 이름과 비밀번호도 원하는대로 설정한다. 20GB까지 무료이므로 변경해주고, 스토리지 자동 조정 활성화를 꺼준다. 외부에서 DB에 접근이 가능하도록 하기 위해 퍼블릭 액세스 부분은 '예'로 변경했다. 추가 구성을 열어, 초기 데이터베이스를 생성해주었다. 자동 백업 활성화는 비활성화 해주었다. (필자는 혹시 몰라 보존기간 0일, 스냅샷으로 태그 복사를 비활성화 한 뒤 자동 백업을 비활성화 시켰다.) 마이너 버전 자동 업그레이도도 비활성화 해주었다. 이제 데이터베이스를 생성하면..

    [Spring] AWS RDS MariaDB + Spring Boot, Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '=' 해결

    AWS RDS MariaDB와 Spring Boot를 연동하고, 서버 실행 후 PostMan으로 테스트를 해보려고 했는데 다음과 같은 에러가 발생했다. Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '=' 찾아보니, JOIN 조건에 있는 각 테이블 컬럼의 문자셋이 달라서 발생하는 에러 라고 한다. HediSQL에서 데이터베이스와 각 테이블의 문자셋을 변경해주었다. -- 데이터베이스 문자셋 변경 alter database DB이름 character set utf8 collate utf8_general_ci; -- 테이블 문자셋 변경 alter table 테이블명 con..

    [Spring] @Valid 메시지 message properties 사용하기, 한글 깨짐 해결

    데이터 유효성 검증을 위해 다음과 같이 메시지를 하드 코딩했다. SignupRequestDto @Getter @Setter public class SignupRequestDto { @Size(min = 4, max = 10) @NotBlank @Pattern(regexp = "^[a-z0-9]*$") private String userId; @Size(min = 8, max = 15) @NotBlank @Pattern(regexp = "(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,15}", message = "비밀번호는 8~15자 영문 대 소문자, 숫자, 특수문자를 사용하세요.") private String password; } 하드 코딩하지 않고 valid의 메시..