분류 전체보기 439

샘플 프로젝트 배포

지금까지는 RDS 생성 root root1234! 포트 개방 3306 외부 액세스 가능 설정 EC2 생성 포트 개방 8080 끝! 샘플 프로젝트 만들어서 연결하고 배포해보자. 프로젝트를 생성하고 개발용 yml(dev)과 배포용 yml(prod) 두 개를 만들 것이다. 이름을 지을 때 하이픈(-)이 프로토콜이고 이름은 마음대로 적어도 된다. 이전에 yml 파일을 하나만 만들었을 때 로그를 자세히 봤다면 프로파일이 설정되지 않았다고 경고 로그가 뜬 걸 봤을 것이다. 스프링을 실행할 때 어떤 설정 파일을 사용할지를 정하지 않았기 때문에 뜬 것이다. application.yml 파일에서 사용할 설정파일을 설정해주자. dev 파일을 사용하겠다고 설정하면 dev 설정파일을 찾을 것이다. 개발할 때는 dev, 배포할..

AWS 2022.04.07

블로그-V3. 모델링, 제약조건 설정

localhost:8080/ (메인페이지 - 글 있는 곳 아님) localhost:8080/user/{userId}/post localhost:8080/user/1 localhost:8080/user/{userId}/post/{postId} localhost:8080/user/{userId}/category/{title} Visit id userId totalCount createDate updateDate 방문자 수는 얼마나 잡아야할까? 마리아 디비의 가장 큰 숫자 타입이 bigint 타입이다. 마리아 디비에서 bigint 타입은 jpa에서 Long을 사용해주면 된다. package site.metacoding.blogv3.domain.visit; import java.time.LocalDateTime..

Spring/Tistory 2022.04.06

블로그-V3. 시큐리티 테스트

시큐리티 라이브러리를 처음 사용해보니까 테스트해보자. localhost:8080/test라고 요청을 했는데 내부적으로 login으로 redirection 되고 잠겨있다. 시큐리티를 사용하면 모든 주소가 잠긴다. 우리가 아는 공격은 XSS, Injection 공격정도가 다인데 이런 공격은 필터로 직접 다 막아야한다. 필터는 네거티브 방식이다. negative 방식은 너 이거 안돼, 이거 안돼 다른 건 다 돼! positive 방식은 할 수 있는 것을 알려준다. 너 이거 해도 되고, 이거 해도 돼 나머지는 다 안돼! 근데 공격이 저거 두 개 말고도 너무 많아서 다 막는 게 좋다. 시큐리티가 하는 일이 여러 가지가 있는데 보안 필터를 작동시킨다. 다 막는 것이다. 그러면 우리는 풀 것만 풀어주면 된다. 시큐리..

Spring/Tistory 2022.04.06

블로그-V3. 프로젝트 세팅

3번째로 복습하는 블로그 프로젝트이다. 이제는 최종 프로젝트이다. 라이브러리를 선택해주는데 두 가지 추가되는 게 있다. 원래 사용하던 6개에 2개가 추가되었다. Spring Boot DevTools Lombok Spring Web Spring Data JPA MariaDB Driver Mustache Spring Security Validation yml 파일 2개만드는데 prod 모드에는 개발할 때 필요한 sql보고 로그 예쁘게 보고 이런 거 필요 없으니까 지워주자. spring: profiles: active: - dev # 개발 할 때 dev server: port: 8080 servlet: context-path: / encoding: charset: utf-8 session: timeout: 3..

Spring/Tistory 2022.04.06

RDS 생성

UNIX -> Linux (GPL; General Pubic License) Linux 소스코드 공개 - 베껴서 뭔가를 만들면 그 만든 소스코드 공개가 원칙 Redhat과 Debian은 Linux를 베껴 만든 OS이기 때문에 무료이다. Redhat이 유료라고 오해하는 사람이 있다. OS를 사용할 때 문제가 생겨서 기술 지원을 받으려면 유료이기 때문이다. 만들어둔 인스턴스는 종료시키고 새로 만들어주자. 외부에서 접근이 가능하도록 8080 포트를 열어주자. 22번은 왜 디폴트로 열려있을까? 문자열 통신은 22번으로 하는데 mobaXterm으로 터미널 통신한 게 문자열 통신이다. SSH (시큐어 셸) 문자열을 암호화하여 통신해 보안이 적용된다는 것이다. 셸은 OS가 사람과 대화할 때 사용하는 언어이다. cd,..

AWS 2022.04.05

EC2 서버에서 jar 파일 실행

1. 방화벽 8080 오픈 2. 샘플 프로젝트 https://github.com/codingspecialist/Springboot-Jwt-blog-With-Flutter GitHub - codingspecialist/Springboot-Jwt-blog-With-Flutter Contribute to codingspecialist/Springboot-Jwt-blog-With-Flutter development by creating an account on GitHub. github.com EC2 서버에서 샘플 프로젝트를 내려받을 것이기 때문에 git이 있나 확인해보자. pwd 명령어로 현재 내 위치 경로를 확인해볼 수 있다. 리눅스에서는 / 가 최상위 폴더이다. ls로 폴더 내부 구조를 확인해볼 수 있다...

AWS 2022.04.05

AWS EC2 서버 접속하기

1. Operation System - CPU + RAM - 연산 + 저장(데이터) OS는 CPU와 RAM으로 구성되어있다. 저장되어있는 데이터로 연산하는 것이다. 2. 문제 (1) 저장 공간이 몇십억개이기 때문에 사람이 직접 저장된 데이터를 찾기가 힘들다. 도서관에서 책을 찾는데 책장이 몇십억개라면 책을 찾기가 어렵다. => OS는 도서관 사서의 역할을 해준다. 필요한 책을 알아서 찾아주는 것이다. (2) 연산(CPU가 하니까 굉장히 빠름)과 저장(비교적 느림)에는 시간차가 발생한다. 연산을 하려고 하니까 데이터가 안와! 이렇게 발생하는 시간차 때문에 연산장치가 멍 때리는 일이 발생한다. => 프로세스 스케줄링 (스레드로!) 멍때리는 시간 동안 분신(스레드)을 하나 만들어서 일을 시키는 것이다. 여러 ..

AWS 2022.04.05

[프로젝트] Github 협업하는 방법

협업 => 코드 합치기 : CI (Continuous Integration) 요즘은 깃헙에 CI를 많이 한다. a, b, c가 협업을 시작하기 전에 가장 먼저 해야 할 일은 다음과 같다. 1. git init 2. git remote add origin 저장소 (원격 origin) 3. git pull (내려받기) = git clone 위의 1, 2, 3은 clone과 같은 과정이다. 내려받으면 모두 1번 2번의 히스토리(형상)를 갖게된다. 이방식 말고 다른 방식이 있다. 저장소를 복제(fork)하는 것이다. 대규모 협업을 할 때 사용하는 방식이다. a도 자기만의 저장소가 있고, b도, c도 자기만의 저장소에 깃헙 형상을 복제한다. 복제한 저장소를 downStream, 원 저장소를 upStream이라고 ..

스프링 59강. JPA 조인 쿼리

글 상세보기를 하면 유저는 한 개의 데이터만 가져오면 되니까 EAGER 전략을 사용한다. EAGER 전략을 사용하면 조인해서 데이터를 가져오는데 조인 쿼리가 어떻게 나오는지 살펴보자. 글에 댓글은 없을 수 있지만 유저는 없을 수가 없으니까 INNER 조인으로 가능하다. -- User EAGER, List LAZY SELECT * FROM post p INNER JOIN user u ON p.userId = u.id WHERE p.id = 3; 코멘트는 여러 건 데이터가 있을 수 있어서 LAZY 전략을 사용하니까 나중에 한번 더 SELECT 하게 JPA가 돌아간다. SELECT * FROM comment WHERE postId = 3; 만약 코멘트가 EAGER 전략을 사용한다면 두 번에 나눠서 SELECT..

Spring/Blog-V2 2022.04.01