본문 바로가기
Framekwork/photogram

[스프링 부트 포토그램] 1강 ~7강 환경설정 완료

by 아이엠제니 2024. 8. 9.

 


 

 

 

강의의 앞부분은 환경설정과 관련된 부분이다.

이미 설치되어 있거나, 아는 내용들은 간단하게 정리만 하려고 한다.

 

 

 

1강 환경설정 - Git 설치


 

 

 

2강 환경설정 - JDK11, STS4 설치


  • JDK11 -> JDK17
    • Windows의 경우, JDK를 설치한 후 환경변수 설정을 해주어야 함
  • STS4 -> IntelliJ Ultimate
    • IntelliJ는 `Communitiy` 버전이랑 `Ultimate` 버전이 있음
    • `Community` 버전은 무료이고, `Ultimate` 버전은 유료임
  • 강의와 다르게 JDK17 를 설치했고, IntelliJ Ultimate로 진행했다.

 

 

 

3강 환경설정 - STS4 웹 개발 설정 및 플러그인 설치


  • STS4 웹 개발 설정으로 스킵

 

 

 

4강 환경설정 - MariaDB 설치 및 설정


  • MariaDB -> MySQL
  • MySQL 은 MySQL 홈페이지에서 다운로드할 수 있음 (MySQL 홈페이지)
  • 이전에 실습할 때는 MariaDB로 진행을 했었는데, 이번에는 MySQL로 진행함
    • MySQL port: 3306
  • 아래 내용도 MySQL에서 진행된 스크린샷 올림

 

 

> DB 생성

create database re_photogram;

  • `MySQL`에서 편집기 오픈 후, 새로운 데이터베이스 생성을 위해 위 쿼리 입력

 

 

> 사용자 생성 및 권한 설정

use mysql;
create user 'user'@'%' identified by '1234';

  • 유저 생성
    • 위에서 생성한 데이터베이스에서만 사용하기 위한 유저 생성 및 비밀번호 설정
    • 위와 같은 형태로 작성하면 됨
      • user: 부분에는 자신이 설정할 유저 네임 입력
      • 1234: 이 부분에는 자신이 설정한 비밀번호 입력
      • 여기서 설정한 username과 password는 `application.yml` 에서 설정을 해줘야 하는데, root 계정은 아니지만 깃허브에 push 할 때 올리지 않도록 함
grant all privileges on re_photogram.* to 'user'@'%';

  • 권한 설정
    •  grant all privileges
      • 지정된 사용자에게 모든 권한 부여
      • 읽기, 쓰기, 업데이트, 삭제 등 모든 작업을 수행할 수 있음
    • on re_photogram.*
      • 권한을 부여할 DB와 테이블 지정
      • `re_photogram` DB의 모든 테이블을 의미함
    • to 'user'@'%'
      • 권한을 부여할 사용자와 호스트 지정

 

 

> DBeaver (Connect to a database)

  • DB 생성 및 권한은 MySQL에서 진행하고, 실제 DB 조회 및 쿼리 조회는 DBeaver를 통해서 할 예정임
  • DBeaver: 다양한 데이터베이스 관리 시스템(DBMS)과 호환되는 오픈 소스 데이터베이스 관리 도구

  • Database: re_photogram
  • username: 앞서 생성한 username 입력
  • password: 앞서 생성한 password 입력
  • 왼쪽 아래 `TestConnection` 버튼 클릭함

 

Public Key Retrieval is not allowed
  • `Test Connection` 버튼을 클릭했을 때, 위와 같이 뜬다면!

 

 

  • `Main` 옆에 보면 `Driver properties`가 있음
  • 위쪽에 `allowPublicKeyRetrieval`이 있는데, false로 되어있는 것을 TRUE로 바꿈
  • 다시 `Test Connection` 버튼 클릭

 

 

`Test Connection`이 성공하면, 위와 같이 `Connected`라고 뜬다.

그럼 연결 성공.

`완료` 버튼을 클릭하여, 연결한다.

 

 

그럼 이렇게 내가 만든 DB가 보이는 것을 볼 수 있다.

아직 Table을 생성하지는 않아서, 비어있는 상태가 맞다.

 

 

💡 `Public Key Retrievalis not allowed`

  • 해당 오류는 MySQL 클라이언트가 서버로부터 공개 키를 가져오려고 시도했지만, 서버에서 해당 동작이 허용되지 않을 경우 발생한다고 함
  • MySQL 8.0 이상에서 발생할 수 있음
  • 위 설정을 통해 클라이언트가 서버로부터 공개 키를 가져올 수 있음

 

 

 

5강 환경설정 - Postman과 JSON Viewer 설치


  • Postman
    • 이미 설치되어 있어서 스킵
    • API의 요청과 응답을 쉽게 테스트할 수 있음
    • `Postman` 홈페이지에서 설치

 

 

6강 환경설정 - 시작프로젝트 다운로드(git)


  • 깃허브에 강사님이 올리신 `EaszUp-Springboot-Photogram-Start` repo 참고해서 프론트 관련 파일 옮김
  • 깃허브에 있는 걸 clone 하면, 바로 실행할 수 있지만 Maven->Gradle, Jsp->Thymeleaf로 변경해서 작업을 할 것이기 때문에 실행은 생략함
  • 대신 기존 repo 받아서 `pom.xml` 참고하여, Spring Boot 프로젝트 생성할 때 Dependencies 추가함
  • 생성 시 누락된 Dependesncy는 `build.gradle`에서 추가하는 것으로 함

 

IDE: IntelliJ Ultimate

 

> New Project

  • Name: photogram_re
  • Language: Java
  • Type: Gradle - Groovy
  • JDK: 17
  • Java: 17
  • Packaging: Jar

`Next` 버튼 클릭

 

 

  • Spring Boot: 3.3.2
  • Dependencies
    • Spring Data JPA
    • OAuth2 Client
    • Spring Security
    • Thymeleaf
    • Spring Web
    • Validation
    • Lombok
    • Spring Boot DevTools
    • MySQL Driver

 

`start` 프로젝트의 `pom.xml` 참고해서, Dependencies 추가했다.

완료된 후에 `Create` 버튼을 클릭한다.

추후 필요한 Dependency는 `build.gradle`에 추가하려고 한다.

 

 

프로젝트 생성 시, 에러가 났다.

`line: 3`을 확인했다.

 

 

Spring Boot version 문제인 것 같아서, 버전을 바꿨다.

3.3.2 -> 3.3.0

 

 

 

버전을 `3.3.0`으로 바꾼 후에, Gradle 프로젝트를 reload한다.

 

 

reload는 오른쪽 상단에 생기는 버튼을 누르면 된다.

만약 버튼이 안 보인다면, Gradle에서 새로고침 버튼을 누르면 된다.

보통 Gradle은 인텔리제이 오른쪽에 배치되어 있다.

 

 

reload를 하니, `BUILD SUCCESSFUL` 문구를 볼 수 있었다.

프로젝트 생성 성공.

 

기존 maven 프로젝트 구조를 보면, `resources`랑 `webapp` 디렉토리가 이렇게 따로 있는 것을 볼 수 있다.

gradle 프로젝트로 옮기면서, `webapp`에 있는 `views`에 있는 디렉토리를 `templates`로 옮길 예정이다.

옮긴 후에 thymeleaf 문법으로 수정하려고 한다.

 

 

 

7강 환경설정 - yml 파일 이해하기


 

💾 application.yml

server:
  port: 8282
  servlet:
    context-path: /
    encoding:
      charset: utf-8
      enabled: true
      
spring:
  config:
    import: "classpath:application-secrets.yml"
  datasource:
    url: jdbc:mysql://localhost:3306/re_photogram?characterEncoding=UTF-8&allowMultiQueries=true
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    open-in-view: true
    hibernate:
      ddl-auto: create
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    show-sql: true

  servlet:
    multipart:
      enabled: true
      max-file-size: 2MB
  thymeleaf:
    prefix=classpath: templates/
    suffix: .html
    check-template-location: true
    cache: false
    mvc:
      static-path-pattern: "/static/**"

#file:
#  path: C:/workspace/springbootwork/upload/
  • 기존 `application.yml` 파일에서 변경한 부분
    • 기본 port 8080 -> 8282로 변경
    • JSP 관련 설정 삭제
    • MariaDB -> MySQL로 변경
    • MySQL 접근을 위한 username, password는 `application-secrets.yml` 파일에서 관리하기 위해 별도로 추가 (깃에 push X)
    • Security 부분 삭제
    • Thymeleaf 설정 추가

 

💾 application-secrets.yml

spring:
  datasource:
    username: 
    password:
  • `application-secrets.yml` 파일에 위처럼 형식을 작성하고, username과 password를 작성함
  • 보안을 위해 해당 파일은 별도로 관리함

 

 

환경설정 세팅은 끝.

 

 

 

이지업클래스 [메타코딩] 스프링부트 SNS프로젝트 - 포토그램 만들기 강의 실습

 

 

 

 

 

 

300x250