전체 글
[ EC2_Amazon Linux ] Redis 설치하기
저번에는 EC2_Amazon Linux 환경에서 mysql을 설치하는 과정을 담았었는데 이번에는 Redis를 설치해보도록 하겠다. mysql 보다 훨씬 쉬웠으니 간단하게 따라올 수 있을 것 이다. 그럼 시작 ! 1. $ sudo yum update -y $ sudo yum install gcc make -y Redis를 설치하기전에 linux 업데이트 및 gcc make를 설치해준다. 2. $ wget http://download.redis.io/releases/redis-6.2.5.tar.gz // redis 설치 $ tar xzf redis-6.2.5.tar.gz // 압축해제 $ cd redis-6.2.5 // 압축 해제 된 폴더로 이동 $ make // gcc make를 이용해 컴파일 위 커맨드를..
[ EC2_Amazon Linux ] Mysql 설치하기
저번에 ubuntu를 세팅했었다. Amazon Linux 운영체제에 mysql을 설치하다가 난관에 봉착하여 ubuntu로 도망갔었는데 내가 이거 하나 제대로 못할까란 생각해 다시 Linux 인스턴스를 생성해서 도전에 나섰다. 추후 Redis 설치법까지 알아보도록 하겠다. 이번 편에서는 Mysql를 설치하는 방법만 알아보고 내가 부딪혔던 오류들에 대해 살펴보도록 하겠다. 아래 진행사항들은 ssh로 생성한 EC2 인스턴스 접속을 한 이후에 진행되는 것 이다. $ sudo yum update -y $ sudo yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm $ sudo yum install -y m..
EC2 Ubuntu 인스턴스 생성부터 Java, Mysql 설치 및 외부접속하기
인스턴스 생성은 전에 후술 한 글을 참고해주세요! 다만 이 부분에서 운영체제를 Ubuntu로 선택하면 됩니다. SpringBoot+AWS+RDS 서버 무중단 배포하기 -EC2편- SpringBoot+AWS+RDS 서버 배포하기 -RDS편- 개발을 하는 것도 좋지만 서버를 배포할 일이 생겼다. 처음에는 배포하는 게 뭐 그리 어렵겠냐 생각했는데 진짜 생각보다 많이 어렵다. 막상 배포를 끝내고 dev-chw.tistory.com 운영체제를 linux가 아닌 ubuntu로 EC2 인스턴스를 생성할 일이 생겨서 작업하게 됐다. 다만, 자꾸 발목을 잡는 문제들이 계속 발생해서 블로그까지 정리하게 되었다. (이것도 결국 필자가 잊지 않기 위한 글..) 내가 인스턴스를 생성하여 접속부터 java, mysql 등을 설치..
[ Spring + AWS S3 ] 이미지 업로드 / 다운로드 구현하기
최근에 이미지를 업로드 및 다운로드를 해야 할 일이 생겨서 구현하게 되었는데 로컬로 진행하던 과정이어서 컴퓨터 내부에 파일이 저장되게끔 유도했었다. 하지만 EC2를 이용한 배포와 RDS를 사용함에 따라 원격 저장소가 필요하게 됐고 자연스럽게 S3를 선택하게 되었다. 이미지를 업로드하고 다운로드하는 코드를 짜는 건 어렵지 않다. 그리고 다운되는 곳을 로컬이 아닌 S3로 저장되게끔 유도만 해주면 되기 때문에 사실 간단한 서비스 구현이 될 수 있다. *** 필수 준비사항 *** 1. S3 버킷 생성해놓기 2. IAM 사용자 권한 추가시키기 (IAM 사용자 등록을 안 했다면 생성) *** 이미지 업로드 / 다운로드 로직 *** 1. form-data 형식으로 file을 request 받음 2. 이미지가 저장될 ..
[ SpringSecurity + JWT + Redis ] Redis와 JWT를 이용한 로그아웃 구현하기 👨💻
이제 마지막 편인, 로그아웃 서비스를 구현해보도록 하겠다. 저번 편에서 로그인을 할 때 redis를 사용해 RefreshToken을 저장해두었던 이유는 결국 로그아웃 처리를 위해 했다고 생각하면 된다. JWT 특성상 한번 발급된 토큰은 삭제/수정이 불가능하기 때문에 인메모리 데이터를 이용해 빠르고 효율적으로 로그아웃 처리를 할 수 있게 만들었다고 생각하면 된다. 이번 편에서 해볼 거는 로그아웃을 했을 때 동작되는 로직과 Filter에서 어떻게 처리되는지 확인해볼 것이다. *** 로그아웃 로직 *** 1. 헤더에서 발급되어있는 JWT 토큰을 가져옴 2. 발급되어있는 JWT 토큰의 시간을 가져오기 3. SecurityContextHolder에 등록되어있는 정보에서 email을 가져온다. 4. 로그인할 때 k..
[ SpringSecurity + JWT + Redis ] 로그인과 RefreshToken을 이용한 AccessToken 재발급편 👨💻
사실 로그인과 토큰 재발급을 나눠서 진행하려 했는데, 로그인 API가 사실 회원가입과 크게 다를 부분이 없어서 한꺼번에 다루기로 했다. 회원가입에서 save만 빠지면 사실상 로그인이기 때문에 복습 겸 다뤄보도록 하자. 회원가입 편을 보고 온다면 이해가 더 빠를 것 이기 때문에 한번 보고 오는 것을 추천한다. [ SpringSecurity + JWT + Redis ] 회원가입편 개발하던 프로젝트에서 사용자의 계정의 권한과 인증에 대해서 처리를 할 때 항상 SpringSecurity와 JWT만을 이용했었는데 그러다 보니 로그아웃을 한다거나 AccessToken을 만료하기위해 직접 DB에 토큰 dev-chw.tistory.com 로그인은 크게 다룰 부분이 없기때문에 빠르게 보도록 하자. 1. Service 회..
[ SpringSecurity + JWT + Redis ] 회원가입편
개발하던 프로젝트에서 사용자의 계정의 권한과 인증에 대해서 처리를 할 때 항상 SpringSecurity와 JWT만을 이용했었는데 그러다 보니 로그아웃을 한다거나 AccessToken을 만료하기위해 직접 DB에 토큰을 넣는 방식을 썼는데, 시스템적 손해가 크기 때문에 잘못된 방법이기도 했다. 또한 RefreshToken을 발급하는 과정또한 존재하지 않았기 때문에 제대로 된 로그인 시스템을 구축했다고 보기 어려웠다. 그러다 보니 사용자의 계정을 인증하는 방법에 대해서 다시 공부를 하였고 제대로 된 로직을 설계하고 다시 한번 회원가입, 로그인, 토큰 재발급, 로그아웃의 서비스들을 개발했으며 개발한 코드의 이해력을 높이기 위해 글을 작성하려 한다. 사실 회원가입 / 로그인 / 토큰 재발급 / 로그아웃만 하더라..
SpringBoot+AWS+RDS 서버 무중단 배포하기 -EC2편-
SpringBoot+AWS+RDS 서버 배포하기 -RDS편- 개발을 하는 것도 좋지만 서버를 배포할 일이 생겼다. 처음에는 배포하는 게 뭐 그리 어렵겠냐 생각했는데 진짜 생각보다 많이 어렵다. 막상 배포를 끝내고 나니 생각보다 쉬운 것처럼 느끼지만 dev-chw.tistory.com 저번 글의 경우 RDS를 생성하였고 이제 SpringBoot에 연결 후 EC2를 사용해 배포해보도록 하자. 참고로 localhost자리에 엔드포인트 값만 넣어주면 바로 연동이 된다. 프로젝트에서 RDS가 연동이 잘 된 것을 확인했다면 바로 EC2에 배포를 시작해보자. RDS를 만드는 것보다 훨씬 간단하기 때문에 차근차근 따라온다면 어려울 게 없다. 준비사항 1. RDS가 연동된 프로젝트 준비 2. 준비된 프로젝트를 GitHu..
SpringBoot+AWS+RDS 서버 배포하기 -RDS편-
개발을 하는 것도 좋지만 서버를 배포할 일이 생겼다. 처음에는 배포하는 게 뭐 그리 어렵겠냐 생각했는데 진짜 생각보다 많이 어렵다. 막상 배포를 끝내고 나니 생각보다 쉬운 것처럼 느끼지만 이리 치이고 저리 치였던 과거를 다 까먹고 이렇게 다시 착각을 불러일으킨다. 배포를 하기까지의 과정은 초보 개발자인 나한테는 상당히 까다로웠다. 로컬 서버 / 로컬 DB 만 썼던 나한테는 특히 어려운 숙제였다,, 내가 첫 번째로 가졌던 생각은 DB만 일단 로컬이 아닌 RDS를 이용해서 연동이나 시켜보자였다. 근데 배포하기까지 RDS를 설정하는 게 제일 어려웠다. 아무튼 이번 글을 통해 서버를 배포하는 과정을 복습도 하면서 잊지 않기 위해 적어놓도록 하자. 사실 오로지 나를 위해 쓰는 글이기도 하다.. 예전에 테스트용으로..
Docker + SpringBoot 개발환경 구축
코로나를 걸리면서 일주일정도 푹 쉬게 되었다,, 몸이 약간 나아져서 예전부터 해보고싶었던 Docker에 Spring Boot 구축하기를 여유있을때 공부해보았다. 나중에 Docker를 통해서 배포까지 해보고 싶지만 추후에 미루고 먼저 Docker + SpringBoot 로 개발을 시작하기전 환경 구축을 하는 것을 먼저 해보자. 참고로 이미 개발해두었던 API들을 도커에 올리는 형식으로 했다. 이제 하는 방법을 잘 알았으니 다음부터 프로젝트를 할때는 도커와 스프링을 먼저 개발환경 설정해주고 시작해야겠다. 아래부터 차근차근 설정을 해보도록 하겠다. 1. Jar 파일 생성 첫번재로 Gradle -> Project이름 -> Tasks -> build 에서 bootJar을 실행시켜주면 패키지 내부에 있는 build..