강의의 앞부분은 환경설정과 관련된 부분이다.
이미 설치되어 있거나, 아는 내용들은 간단하게 정리만 하려고 한다.
1강 환경설정 - Git 설치
- Git 설치는 Git 홈페이지에서 할 수 있음 (깃 홈페이지)
- 버전 관리를 수행하기 위한 분산 버전 관리 시스템
- 설치 참고: [Git] 윈도우에 깃 설치 — JeLog (tistory.com)
- 이미 설치되어 있어서, 스킵
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'@'%'
- 권한을 부여할 사용자와 호스트 지정
- grant all privileges
> 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` 홈페이지에서 설치
- JSON Vierwer
- 크롬 웹 스토어에서 `json viewer`로 검색해서 설치
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프로젝트 - 포토그램 만들기 강의 실습
'Framekwork > photogram' 카테고리의 다른 글
[스프링 부트 포토그램] 17강 인증 회원가입 - CSFR 토큰 해제 (0) | 2024.08.26 |
---|---|
[스프링 부트 포토그램] 16강 인증 회원가입 - SecurityConfig 생성 (0) | 2024.08.22 |
[스프링 부트 포토그램] 11강 ~ 15강 Controller (데이터 전송, 응답, redirection) (0) | 2024.08.21 |
[스프링 부트 포토그램] 8강~ 10강 Controller (동작 방식, http, 쿼리스트링, 주소 변수 매핑) (0) | 2024.08.20 |
[스프링 부트 포토그램] Spring Boot PhotoGram 클론 코딩 완료 (0) | 2024.08.08 |