728x90

AWS로의 모험4!

과금이 발생하지 않도록 유의해봅시다⭐!

 

 

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

 

aws.amazon.com

 

 

1. putty 접속

* login as: ec2-user

 

 

2. mysql 설치

🚨 시도1

1
2
sudo yum install mysql
 
 

* 오류: Error: Unable to find a match: mysql

* 원인: Amazon Linux에서 지원하지 않는 버전의 레파지토리 설치

    - Amazon Linux 2023의 경우 EL9 버전의 레파지토리와 mysql-community-sever를 설치해야함

 

🚨 시도2

1
2
yum install mysql
 
 

* 오류: Error: This command has to be run with superuser privileges (under the root user on most systems).

* 원인: 특정 명령어나 작업을 슈퍼 유저 또는 루트 사용자 권한으로 실행해야 하는데, 일반 사용자 권한으로 실행하려고 할 때 발생

    - 슈퍼유저 또는 루트 사용자 권한은 시스템 관리자 권한으로, 시스템의 중요한 부분을 변경하거나 설정을 수정하는 작업을 수행할 때 필요

 

🚨시도3

1
2
3
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo dnf install mysql-community-server
 
 

 

 

3. RDS 접속

1
2
mysql -u 계정 -p -h Host주소
 
 

Host 주소 = RDS 엔드포인트 주소

 

 

4. DB 확인

1
2
show databases;
 
 

 

🤹 실행 결과

 

 

 

📚 참고 자료

 

[EC2] ERROR: No matching distribution found for mysqlclient 해결 방법 (EC2 mysql 패키지 설치 오류)

Collecting mysqlclient==2.1.1 Downloading mysqlclient-2.1.1.tar.gz (88 kB) |████████████████████████████████| 88 kB 12.7 MB/s Preparing metadata (setup.py) ... error ERROR: Command errored out

hyunki99.tistory.com

 

728x90
728x90

AWS로의 모험3!

과금이 발생하지 않도록 유의해봅시다⭐!

 

 

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

 

aws.amazon.com

 

 

⭐ 프리티어 사용량보다 많을 경우, 과금이 되니 주의

 

 

1. RDS 검색 후, 데이터베이스 생성 클릭

 

 

2. RDS 생성 옵션 선택

* 마스터 사용자 이름과 암호는 DB 접속 시 필요하므로 관리 유의

 

🚨 과금 유의 구간

* 인스턴스 구성:RDS 인스턴스 프리티어 사용시 월별 750시간 무료 제공은 db.t2.micro 타입만 해당

* 스토리지: 범용(SSD) 데이터베이스 스토리지는 프리티어에서 20GB까지 무료로 제공

* 스토리지 자동 조정 활성화 체크 해제

 

* EC2 컴퓨팅 리소스에 연결 안함: RDS 생성 후, EC2와 수동으로 연결 예정

 

* 퍼블릭 엑세스: Public 접속을 허용할지 여부

    - 허용하는 것은 보안의 이유로 추천되지 않음

    - DB 외부 접속을 위해 public access 허용

 

🚨 과금 유의 구간

* 자동 백업 활성화 체크 해제

 

 

3. 데이터베이스 생성하기 클릭 후, 생성중 → 사용가능까지 대기

 

 

4. 보안 그룹 설정

사용 가능 옆 DB 식별자의 database-mini1 클릭 시 화면에서 VPC 보안 그룹 클릭

 

검색 창에서 EC2에서 생성했던 보안 그룹의 그룹 ID 복사 후, 보안 그룹 생성

 

* 보안그룹 이름은 rds 보안 그룹임을 나타낼 수 있도록 기재

* 인바운드 규칙

    - EC2 인스턴스의 보안 그룹 ID: EC2 서버와 RDS간의 통신

    - 내IP: 로컬 PC에서 DB Client Tool (Workbench, Sequel Pro 등)으로 RDS에 접속

 

데이터베이스에서 보안그룹 변경

 

수정 후, VPC 보안 그룹 변경 내역 확인 후 엔트포인트 주소 복사

 

 

5. Workbench에서 RDS 접속

🚨 Connection Warning이 발생하므로 Workbench보다는 다른 IDE 사용 권장

* Hostname: 엔드포인트 주소

* Username: DB 호스트 이름

* Connection 시도 시, Password는 DB 암호 입력

 

 

6. 파라미터 그룹 수정(한글 설정)

* 파라미터 그룹 패밀리: 현재 사용하는 RDS DB의 Version

* 그룹 이름 및 설명 작성

 

* 수정 내용

    - time_zone: Asia/Seoul

    - character_set_client: utf8mb4
    - character_set_connection: utf8mb4
    - character_set_database : utf8mb4
    - character_set_filesystem : utf8mb4
    - character_set_results : utf8mb4
    - character_set_server : utf8mb4

    - collation_connection: utf8mb4_general_ci
    - collation_server: utf8mb4_general_ci

 

* utf8 /  utf8mb4 차이: 이모지 저장 가능 여부

 

 

7. RDS 인스턴스 수정

DB 파라미터 그룹 수정 후, 즉시 적용

 

 

8. 수정 완료 후, 재부팅 진행

 

 

 

📚 참고 자료

 

4) 스프링부트로 웹 서비스 출시하기 - 4. AWS EC2 & RDS 구축하기

이번 시간엔 SpringBoot를 운영할 AWS 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) Tip) 운영 서버는 크게 클라우드 서비스(AWS, Azure 등) 과 호스팅 서비스(Cafe24, 코리아호스팅 등)을 이용

jojoldu.tistory.com

 

[AWS Cloud] RDS(Relational Database Service) 생성하기

목차 RDS 생성 인스턴스와 DB 연결 RDS 스냅샷 생성 DB 실행하기 RDS 생성 1. RDS를 검색하고 접속해줍니다. 2. "데이터베이스 생성" 버튼을 클릭합니다. 3. 원하는 방법을 선택합니다. 이번 포스팅에서

easyitwanner.tistory.com

 

 

[AWS RDS] MariaDB 프리티어 생성

AWS의 클라우드 DB 서비스인 RDB를 프리티어로 사용해보았다

velog.io

 

728x90
728x90

AWS로의 모험2!

과금이 발생하지 않도록 유의해봅시다⭐!

 

 

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

 

aws.amazon.com

 

 

* EIP(Elastic IP: AWS 고정 IP)

- EC2 인스턴스에 고정 IP가 할당된 상태가 아니라서, 인스턴스를 재시작할때마다 새 IP가 할당되서 도메인 연결을 할수가 없으므로 고정 IP를 할당

 

⭐ 만들때는 과금이 안되지만 EC2와 연결을 안하면 과금이 되니 주의

 

 

1. 좌측 탄력적IP 선택

 

 

2. 할당

Default값으로 진행

 

 

3. 할당된 IPv4 주소 선택

 

 

4. 탄력적 IP 주소 연결

 

 

5. 윈도우에서 EC2 접속

SSH 접속 프로그램 Putty 사용

 

Download PuTTY - a free SSH and telnet client for Windows

Is Bitvise affiliated with PuTTY? Bitvise is not affiliated with PuTTY. We develop our SSH Server for Windows, which is compatible with PuTTY. Many PuTTY users are therefore our users as well. From time to time, they need to find the PuTTY download link. W

www.putty.org

 

* SSH(Secure Shell)

- 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜

 

 

6. puttygen으로. pem파일 변환

.pem → .ppk

 

 

7. Putty 접속

- Session

    - HostName: 퍼블릭 IPv4 주소 입력

    - Port: 22 (Default)

- Connection/SSH/Auth/Credentials

    - Private key file for authentification: .ppk 파일 등록

 

 

8. 실행 후, login as: ec2-user 입력

🤹 실행 결과

 

 

 

📚 참고 자료

 

[AWS] EC2 알아보기 + 인스턴스 생성하기

AWS EC2 알아보기

velog.io

 

[AWS]EC2 - 윈도우에서 인스턴스 접속하기 (2/2)

SSH란? SSH(Secure Shell)는 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다. 셸로 원격 접속을 하는 것이므로 기본적으로 CLI 상에서 작업을 하게 된다. 기본 포트는 22번이다. (S

codemonkyu.tistory.com

 

4) 스프링부트로 웹 서비스 출시하기 - 4. AWS EC2 & RDS 구축하기

이번 시간엔 SpringBoot를 운영할 AWS 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) Tip) 운영 서버는 크게 클라우드 서비스(AWS, Azure 등) 과 호스팅 서비스(Cafe24, 코리아호스팅 등)을 이용

jojoldu.tistory.com

 

728x90
728x90

AWS로의 모험!

과금이 발생하지 않도록 유의해봅시다⭐!

 

 

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

 

aws.amazon.com

 

 

1. 우측 상단의 Region을 서울로 변경

 

 

2. EC2 인스턴스 생성을 위해 EC2 검색 및 접속

* EC2(Elastic Compute Cloud)

- 아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스

- 클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공 → AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것

 

 

3. 인스턴스 시작

 

 

4. 서버 이름 지정

 

 

5. AMI 선택

* AMI(Amazon Machine Image)

- 인스턴스를 시작하는 데 필요한 소프트웨어 구성(운영 체제, 애플리케이션 서버 및 애플리케이션)이 포함된 템플릿

 

 

6. 인스턴스 유형 선택

프리티어를 지원하는 t2.micro를 선택

* 프리티어

- AWS에서 12개월동안 월 750시간 / 30G 용량을 무료로 사용할 수 있는 체험판 서비스

 

 

7. 키 페어 선택

없을 경우, 새 키 페어 생성 클릭

⭐ 키페어를 갖고 있어야만 해당 인스턴스에 접근이 가능하기 때문에 잘 보관해야 함

 

 

8. 네트워크 설정

⭐ 과금 유의 구간

지정된 IP외 AWS EC2에 터미널로 접속하는 것을 차단하여 나의 서버가 채굴 서버가 되지 않도록 유의

- SSH에 내 IP만 설정

- 외부에서 서비스에 접근을 해야하므로 HTTPS(443), HTTP(80)은 열어놓음

 

 

9. 스토리지(볼륨) 설정

프리 티어가 할 수 있는 As many as possible..!

 

 

10. 인스턴스 생성

 

 

11. 🤹 인스턴스 실행 확인

 

 

 

📚 참고 자료

 

AWS EC2 개념 정리

🌻 AWS 스터디 1조 대표로 올리는 글입니다 1주차 주제는 EC2 입니다🌻

velog.io

 

4) 스프링부트로 웹 서비스 출시하기 - 4. AWS EC2 & RDS 구축하기

이번 시간엔 SpringBoot를 운영할 AWS 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) Tip) 운영 서버는 크게 클라우드 서비스(AWS, Azure 등) 과 호스팅 서비스(Cafe24, 코리아호스팅 등)을 이용

jojoldu.tistory.com

 

[AWS] EC2 알아보기 + 인스턴스 생성하기

AWS EC2 알아보기

velog.io

 

728x90
728x90

이 글은 향로님의 [스프링부트로 웹 서비스 출시하기] 참고하며 프로젝트를 만들며 정리한 글입니다.

 

3) 스프링부트로 웹 서비스 출시하기 - 3. SpringBoot & Handlebars로 화면 만들기

이번 시간엔 SpringBoot & Handlebars로 간단한 화면을 만들 예정입니다. (모든 코드는 Github에 있습니다.) Handlebars는 흔히 사용하시는 Freemarker, Velocity와 같은 서버 템플릿 엔진입니다. JSP는 서버 템플릿

jojoldu.tistory.com

 

 

👉 기본 환경

- Language: Java

- DB: MySQL

- IDE: IntelliJ

 

 

🤔

정보처리기사 실기 시험이 코 앞으로 다가왔기 때문에, 간단하게 SQL 실행 스크립트 예제를 정리해보고자 합니다.

시작 전에 먼저 알아야 할 점은,

 

⭐ 스크립트 기반의 초기화화 Hibernate 기반의 초기화가 함께 사용되는 것은 권장되지 않음 ⭐

 

 

application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
spring:
  profiles:
    active: local # 기본 환경 선택
 
# local 환경
---
spring:
  profiles: local
  datasource:
    data: classpath:data-h2.sql # 시작할때 실행시킬 script
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: create-drop
  h2:
    console:
      enabled: true
 
 

저는 application.properties를 사용했지만, 게시글에서는 yml로 작성이 되어있습니다.

그래서 이 application.yml → application.properties로 변경하면,

스프링부트 3.x대 기준으로 동작하지 않을 확률이 높습니다.

 

5년의 시간동안 스프링부트도 변화했기 때문이죠.

 

그래서 우리의 친구 🌎Google과 🤖GPT의 도움을 받아 가장 먼저 properties 파일을 분리하였습니다.

 

- application.properties(전역 설정)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# MySQL 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/DB이름?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
spring.datasource.username=USER이름
spring.datasource.password=비밀번호
 
# JPA 설정
spring.jpa.show-sql=true
# true 설정 시, JPA 쿼리문 확인 가능
spring.jpa.hibernate.ddl-auto=create-drop 
# DDL(create, alter, drop) 정의 시, DB의 고유 기능을 사용할 수 있음
spring.jpa.properties.hibernate.format_sql=true
# JPA의 구현체인 Hibernate가 동작하면서, 발생한 SQL의 가독성을 높여줌
 
# .jsp 설정
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
 
# 기본 환경 선택 (local 환경으로 선택)
spring.profiles.active=local 
 
 

spring.profiles

- 어플리케이션 실행시 파라미터로 넘어온게 없으면 active 값을 인식

 

application-local.properties(전역 설정)

- 프로파일에 따라 다른 설정을 사용하도록 하기 위해 별도의 설정 파일을 생성

1
2
3
4
5
6
# local 환경
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.defer-datasource-initialization=true
spring.sql.init.mode=always
 
 

- 공통영역의 값은 각 profile환경에 동일한 설정이 있으면 무시되고, 없으면 공통영역의 설정값이 사용됨

    🚨 그러므로, 공통영역에 설정값을 넣는것에 주의

    - 만약 공통영역에 jpa.hibernate.ddl-auto:create-drop가 있고 운영 profile에 해당 설정값이 없다면 운영환경에서 배포시 모든 테이블이 drop -> create 됨
    - ⭐ 이 때문에 datasource, table 등과 같은 옵션들은 공통영역엔 두지 않고 각 profile마다 별도로 두는것을 추천

 

1. spring.jpa.defer-datasource-initialization=true

스프링의 경우, 내장 데이터베이스(H2, HSQL, Derdy)에 대해서 스크립트 기반의 초기화를 기본적으로 실행하지만, 내장 데이터베이스가 아닌 경우(MySQL 등) 다음 옵션을 활성화(= always) 해야함
외부 데이터베이스와 연결되어 있다면   해당 옵션을 활성화해야 script 파일이 적용됨

Options

    - always: 모든 데이터베이스에 sql script를 동작

    - embedded: embedded(내장) 데이터베이스만 sql 스크립트를 동작

    - never: 모든 데이터베이스에 sql script를 동작시키지 않음

 

⭐ SpringBoot Ver 확인

1
2
3
4
5
6
# Springboot 2.4.x 버전 이전
spring.datasource.initialization-mode
# Springboot 2.5.x 버전 이후
# 'spring.datasource.initialization-mode' Deprecated
spring.sql.init.mode
 
 

 

2. spring.sql.init.mode=always

Spring Boot 애플리케이션에서 데이터베이스 초기화를 설정하는 속성

데이터베이스 초기화 스크립트는 기본적으로 schema.sql 파일과 data.sql 파일을 찾아서 실행

프로젝트의 클래스패스에 위치해야 하며 일반적으로 src/main/resources 디렉토리에 위치

Options

    - always

        - 애플리케이션이 시작될 때 마다 데이터베이스 스키마 초기화 스크립트가 항상 실행

        - 개발 및 테스트 환경에서 주로 사용되며, 애플리케이션을 새로 시작할 때마다 데이터베이스 스키마를 초기화하고 테스트 데이터를 적재하려는 경우에 유용

    - embedded: 데이터베이스가 내장(embedded) 데이터베이스 (예: H2, HSQLDB)인 경우에만 데이터베이스 스키마 초기화를 시도
    - never: 데이터베이스 스키마 초기화를 시도하지 않음, 보통 실제 환경에서 사용

 

 

3. data.sql

스프링부트에서는 데이터베이스 초기 설정을 위해 기본적으로 script(schema.sql, data.sql) 파일을 사용

- schema.sql: 데이터 정의어(DDL) 작성

- data.sql: 데이터 조작어(DML) 작성

 

 

🤹 실행 결과

 

 

+ Project Structure

 

 

 

🔗 소스 코드 

 

GitHub - HJ0216/mini1: SpringBoot+JPA Board Mini Project

SpringBoot+JPA Board Mini Project. Contribute to HJ0216/mini1 development by creating an account on GitHub.

github.com

 

📚 참고 자료

 

Spring Boot 초기 데이터 설정 방법 정리(data.sql, schema.sql)

스프링부트 초기 데이터 설정 방법에 대한 정리 스프링부트에서는 데이터베이스 초기 설정을 위해 기본적으로 script(schema.sql, data.sql) 파일을 사용할 수 있는데요. 관념적으로 데이터 정의어(DDL)

wildeveloperetrain.tistory.com

 

728x90