diff --git a/.DS_Store b/.DS_Store index ee71b52..fe3bcfd 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/README.md b/README.md index 4e87d0b..8bcfa44 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,107 @@ -# WEB_Spring +# Last week05 +-**자세한 사항은 각 주차의 Readme** -sdfsf + **최종목표** - -## Week02 - - **[수업 목표]** - - 1. RDBMS의 기초 지식을 습득한다. - 2. Spring Data JPA의 사용법을 습득한다. - 3. REST API를 만드는 방법을 익힌다. - -- 3 Layers - * Controller : 제일 바깥 쪽에서 요청을 받고, 응답을 되돌려주는 역할 - * Service : 중간에서 구체적인 작업 순서 결정 - * Repository : DB와 직접 소통하며 자료를 생성, 조회, 변경, 삭제 - * Layer 간에는 절대 Entity를 직접 사용하지 않고, DTO 사용 + 1. 내가 만든 로컬서비스를 AWS RDS의 MySQL 데이터베이스 연결 + 2. AWS EC2를 세팅하여 배포 + 3. 실제 도메인을 붙이기 -- Using H2 RDBMS (http://localhost:8080/h2-console) - - src > main > resources > application.properties - - spring.h2.console.enabled=true - - spring.datasource.url=jdbc:h2:mem:testdb -- Timestamped - - Timestamed.java - - @MappedSuperclass // 상속했을 때, 컬럼으로 인식 - @EntityListeners(AuditingEntityListener.class) // 생성/수정 시간을 자동으로 반영하도록 설정 - - public class Timestamped { - @CreatedDate // 생성일자 - private LocalDateTime createdAt; +### RDS 구매 후 내 서비스에 MySQL 세팅 + + 1. AWS 서비스 찾기에서 RDS 검색 + 2. 데이터베이스 생성 + - 표준생성 선택 + - MySQL 선택 + - 프리티어 선택 + - DB 인스턴스 식별자, 마스터 사용자 이름, 암호 설정 + - 로컬컴퓨터에서 AWS RDS의 MySQL 연결이 가능하도록 퍼블릭 엑세스 기능 '예' + - VPC 보안그룹 새로 임의로 생성 + - 추가 구성에서 초기 데이터베이스 이름 입력 후 생성 완료 + 3. RDS 포트 열기 + - 생성한 데이터베이스 선택 후 연결&보안 > 보안 > VPC 보안그룹 > 보안그룹 ID클릭 + - 인바운드 규칙 편집 클릭 후 소스 > 위치무관 선택 후 저장 + 4. 내 로컬 프로젝트에 DB 연결 + - 로컬컴퓨터의 프로젝트 파일을 IntelliJ에서 열고 Database > Data Source > MySQL 선택 + - Name : 임의지정 + - Host : 나의 엔트포인트 + - User : 나의 Username + - Password : 나의 비밀번호 + - Database : 내 데이터베이스 이름 + - Test Connection으로 확인 후 OK + 5. 스프링부트와 MySQL 연결 + - application.properties에서 코드입력 + > spring.datasource.url=jdbc:mysql://나의엔드포인트:3306/myselectshop + > spring.datasource.username=나의USERNAME + > spring.datasource.password=나의패스워드 + > spring.jpa.hibernate.ddl-auto=update + 6. OG 태크 붙이기 + > + > + > + +### AWS EC2 서버 구매 후 실제 배포 + 1. Launch Instance + - key pair 받기 + - 무료 기간(1년) 후 종료원하면 인스턴스 상태 > 종료 + + 2. EC2 접속 + - 터미널 입력 : sudo chmod 400 (키체인붙여넣기) + - 터미널 입력 : ssh -i (키체인붙여넣기) ubuntu@(ip주소) + + 사진1 + + - SSH란? - 다른 컴퓨터에 접속 시 쓰는 프로그램으로 보안이 상대적으로 좋음 + - 22번 포트가 열려있어야 접속 가능 + + 3. EC2 배포 + - Intellij 프로젝트 파일 > Gradle > Tasks > build > build + - libs 생성 + - OpenJDK 설치 + - 터미널 입력 : sudo apt-get update 로 업데이트 해주기 + - 터미널 입력 : sudo apt-get install openjdk-8-jdk 로 openjdk 설치 + - 터미널 입력 : java -version 으로 마지막 확인 + - Filezilla 이용해서 배포 파일 업로드 + - 사이트 관리자 > New Site에서 설정 + - Protocol : SFTP + - Logon Type : Key file + - User : ubuntu + - 키파일 찾아서 업로드하고 OK + - libs에서 생성된 .jar 파일 업로드/다운로드 + - 스프링 부트 작동 + - java -jar JAR파일명.jar + + 사진3 - @LastModifiedDate // 마지막 수정일자 - private LocalDateTime modifiedAt; - } + - AWS에서 80,8080 포트 열기 + - aws사이트의 인스턴스 > 보안그룹 > ID클릭 > 인바운드규칙 편집 > 8080, 80 포트 추가 + - 80 port : HTTP 접속을 위한 기본포트 + - 8080 port : 스프링 부트를 위한 로컬 기본포트 +### Port forwarding & nohup + 1. Port forwarding + - 80포트로 들어오는 요청을 8080포트로 전달하는 방법 + - 포트 번호 입력없이 자동으로 접속 + - 터미널 입력 : sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 포트포워딩 + - 터미널 입력 : java -jar JAR파일명.jar 서비스 재시작 + 2. nohup + 원격접속, SSH 접속을 끊어도 서버가 계속 돌기 위한 방법 + - 터미널 입력 : nohup java -jar JAR파일명.jar & + - 서버종료를 원할 시, + - ps -ef | grep java 로 pid 값 확인 + - kill -9 [pid값] 로 특정 프로세스 kill - 이후 테이블이 상속하고 Application에 추가 - @EnableJpaAuditing - @SpringBootApplication + 사진2 -- Using Lombok, DTO - -- #### Task02 +### 도메인 붙이기 + - 도메인 구매 - '가비아'라는 회사 + - 구매한 도메인의 관리툴 선택 > 도메인 연결 설정 > DNS 설정 + - 호스트 이름 : & , IP 주소 입력 - Person 정보를 CRUD 기능을 이용하여 관리하자. - https://localhost:8080/api/persons : POST - https://localhost:8080/api/persons : GET - https://localhost:8080/api/person/{id} PUT - https://localhost:8080/api/persons/{id} DELETE - - -## Week03 - - **[수업 목표]** - - 1. 페이지를 만들기 위한 HTML,CSS, Javascript를 익힌다. - 2. 스프링을 이용해 API를 만들고 기능 확인하는 법을 손에 익힌다. - 3. 타임라인 서비스를 완성한다. - - ffffff - - - Javascript 기초문법 - -- jQuery : 미리 작성된 자바스크립트 함수 모음 +### 프로젝트 1 (week03) +![timeline](https://user-images.githubusercontent.com/70695311/103992908-27f3b180-51d8-11eb-87c7-346bb66d49a3.gif) +### 프로젝트 2 (week04) -- #### Task03 - - 타임라인 서비스가 불러오는 메모 목록의 시간을, 조회 시간으로부터 24시간 이내로 바꾸기 - - MemoRepository - public interface MemoRepository extends JpaRepository { - List findAllByModifiedAtBetweenOrderByModifiedAtDesc(LocalDateTime start, LocalDateTime end); - } - - MemoController - @Getmapping("/api/memos") - public List getMemos() { - LocalDateTime startDatetime = LocalDateTime.now().minusDays(1); - LocalDateTime endDatetime = LocalDateTime.now(); - return memoRepository.findAllByModifiedAtBetweenOrderByModifiedAtDesc(startDatetime, endDatetime); - } - - ![timeline](https://user-images.githubusercontent.com/70695311/103992908-27f3b180-51d8-11eb-87c7-346bb66d49a3.gif) +스크린샷 2021-01-22 오전 11 54 33 diff --git a/week01/.DS_Store b/week01/.DS_Store index dd320b4..360abca 100644 Binary files a/week01/.DS_Store and b/week01/.DS_Store differ diff --git a/week02/README.md b/week02/README.md new file mode 100644 index 0000000..141eb8f --- /dev/null +++ b/week02/README.md @@ -0,0 +1,50 @@ +# WEB_Spring + +## Week02 + + **[수업 목표]** + + 1. RDBMS의 기초 지식을 습득한다. + 2. Spring Data JPA의 사용법을 습득한다. + 3. REST API를 만드는 방법을 익힌다. + +- 3 Layers + * Controller : 제일 바깥 쪽에서 요청을 받고, 응답을 되돌려주는 역할 + * Service : 중간에서 구체적인 작업 순서 결정 + * Repository : DB와 직접 소통하며 자료를 생성, 조회, 변경, 삭제 + * Layer 간에는 절대 Entity를 직접 사용하지 않고, DTO 사용 + +- Using H2 RDBMS (http://localhost:8080/h2-console) + + src > main > resources > application.properties + - spring.h2.console.enabled=true + - spring.datasource.url=jdbc:h2:mem:testdb +- Timestamped + + Timestamed.java + + @MappedSuperclass // 상속했을 때, 컬럼으로 인식 + @EntityListeners(AuditingEntityListener.class) // 생성/수정 시간을 자동으로 반영하도록 설정 + + public class Timestamped { + @CreatedDate // 생성일자 + private LocalDateTime createdAt; + + @LastModifiedDate // 마지막 수정일자 + private LocalDateTime modifiedAt; + } + + 이후 테이블이 상속하고 Application에 추가 + @EnableJpaAuditing + @SpringBootApplication + +- Using Lombok, DTO + +- #### Task02 + + Person 정보를 CRUD 기능을 이용하여 관리하자. + https://localhost:8080/api/persons : POST + https://localhost:8080/api/persons : GET + https://localhost:8080/api/person/{id} PUT + https://localhost:8080/api/persons/{id} DELETE + diff --git a/week03/README.md b/week03/README.md new file mode 100644 index 0000000..9499c56 --- /dev/null +++ b/week03/README.md @@ -0,0 +1,35 @@ +# WEB_Spring + +## Week03 + + **[수업 목표]** + + 1. 페이지를 만들기 위한 HTML,CSS, Javascript를 익힌다. + 2. 스프링을 이용해 API를 만들고 기능 확인하는 법을 손에 익힌다. + 3. 타임라인 서비스를 완성한다. + + + ffffff + + - Javascript 기초문법 + +- jQuery : 미리 작성된 자바스크립트 함수 모음 + + +- #### Task03 + + 타임라인 서비스가 불러오는 메모 목록의 시간을, 조회 시간으로부터 24시간 이내로 바꾸기 + + MemoRepository + public interface MemoRepository extends JpaRepository { + List findAllByModifiedAtBetweenOrderByModifiedAtDesc(LocalDateTime start, LocalDateTime end); + } + + MemoController - @Getmapping("/api/memos") + public List getMemos() { + LocalDateTime startDatetime = LocalDateTime.now().minusDays(1); + LocalDateTime endDatetime = LocalDateTime.now(); + return memoRepository.findAllByModifiedAtBetweenOrderByModifiedAtDesc(startDatetime, endDatetime); + } + + ![timeline](https://user-images.githubusercontent.com/70695311/103992908-27f3b180-51d8-11eb-87c7-346bb66d49a3.gif)