🔽전체 요약
(설정) AWS 사용
- https://aws.amazon.com/ko/
💡 (프리티어) 회원가입 및 로그인
- 매뉴얼 참조(최근 내용으로 참조)
- https://blogworks.co.kr/aws-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%EB%A9%94%EB%89%B4%EC%96%BC/
💡 (라이트세일) https://lightsail.aws.amazon.com/
- 인스턴스 클릭 > 인스턴스 생성 버튼 클릭
- 리전 서울
- 인스턴스 이미지 > Linux/Unix
- 블루프린트 > 운영 체제(OS) 전용 클릭 > Ubuntu 22.04 LTS
- 인스턴스 플랜 > 듀얼 스택
- 크기 선택 > 월별 $12 선택(무료 중 가장 스펙이 좋음)
- 인스턴스 확인 > 본인이 원하는 이름으로 변경 후(Ubuntu-eunji)
- 인스턴트 생성 클릭
- 실행 중 확인 > ⁝ 클릭 > 관리
- 네트워킹 > 고정 IP연결 > 아이피명(StaticIp-eunji) 연결 > 생성
- IPv4 방화벽 > 규칙 추가 > 8080 추가
- 계정 > SSH 키 > 기본 키 다운로드(.pem) > 위치 변경(옵션)
💡 PuTTY AWS 리눅스 서버 연결
- https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 64비트 다운로드 및 설치
- PuTTYgen 실행 > Load 기본키 선택 > Save private key 클릭 > .ppk로 저장
- PuTTY 실행
- Session > Host Name : AWS 고정 아이피 입력(43.201.221.65)
- Connection > SSH > Auth > Credentials : Private key를 .ppk로 선택(aws_eunji)
- Session > Saved Session명 입력 > save
- Open 후 콘솔 login as: ubuntu 입력
💡 FileZilla로 FTP 연결
- https://filezilla-project.org/download.php 다운로드
- 사이트 관리자 열기
- 새 사이트
- 프로토콜: SFTP
- 호스트 : 고정 아이피 입력
- 로그온 유형 : 키 파일
- 사용자 : ubuntu
- 키 파일 : *.ppk 선택
💡 설정 변경
```shell
> sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime (한국 시간 변경)
> hostname
> sudo hostnamectl set-hostname eunji
> sudo reboot (서버 재시작)
> sudo apt-get update (전체서버 패키지 업데이트)
> java
> sudo apt-get install openjdk-17-jdk
> java -version
openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Ubuntu-122.04.1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Ubuntu-122.04.1, mixed mode, sharing)
```
💡 Visual Studio Code
- Gradle for java > Tasks > build > clean > build > bootJar
- buld.gradle > version = '0.0.1-SNAPSHOT'-> version = '1.0.1-SNAPSHOT' 변경 - > bootJar
- *-SAPSHOT.jar 생성 확인
💡 FileZilla
- *.jar > AWS로 전송
💡 PuTTY
```shell
> ls
...
> cd bootserver
>ls
backboard-1.0.1-SNAPSHOT.jar
>sudo java -jar backboard-1.0.1-SNAPSHOT.jar
```
AWS 업로드 전 oracle -> h2로 Database 변경
build.gradle 버전 변경
id 'org.springframework.boot' version '3.3.1'
- 3.3.0 -> 3.3.1로 변경
application.properties 수정
## H2 설정 - 내가 개발할 때만 쓰는 형태 추천
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
## Oracle 설정 - 운영DB
# spring.datasource.url=jdbc:oracle:thin:@localhost:11521:FREE
# spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
# spring.datasource.username=PKNUSB
# spring.datasource.password=pknu_p@ss
## JPA 설정
spring.jpa.database=h2
# spring.jpa.database=oracle
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.OracleDialect
### ddl-auto 자동으로 테이블을 만들어주는 기능
### 데이터베이스 관리 정책 >> 실제 운영하는 서버에서는 validate(1), update(2)
### create: application 실행시마다 새로 생성, 최초 개발시
### create-drop: application 실행시 생성, 종료시 드랍. 사용 비추천
### update: 최초 한번만, 변경사항이 있으면 반영, 계속 개발시
### validate: DB테이블과 엔티티 클래스가 일치하는지 검증만, 운영시
### none(default) - 사용 비추천
spring.jpa.hibernate.ddl-auto=update
- JPA 설정 부분 주석, H2 설정 추가
https://lightsail.aws.amazon.com/ Lightsail접속
1. 인스턴스 클릭 > 인스턴스 생성 버튼 클릭
- 리전 서울
- 인스턴스 이미지 > Linux/Unix
- 블루프린트 > 운영 체제(OS) 전용 클릭 > Ubuntu 22.04 LTS
- 인스턴스 플랜 > 듀얼 스택
- 크기 선택 > 월별 $12 선택(무료 중 가장 스펙이 좋음)
- 인스턴스 확인 > 본인이 원하는 이름으로 변경 후(Ubuntu-eunji)
- 인스턴트 생성 클릭
- 실행된 것을 확인할 수 있음
실행 중 확인 > ⁝ 클릭 > 관리
네트워킹 > 고정 IP연결 > 아이피명 연결 > 생성
- 본인이 지우기 전까지는 고정IP 유지
IPv4 방화벽 > 규칙 추가 > 8080 추가
- 8080포트를 열어줌
SSH 키 > 기본키 다운로드
- 계정 클릭
- SSH 키 > 기본키 다운로드
- C:\work에 저장
PuTTY AWS 리눅스 서버 연결
1. https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 64비트 다운로드 및 설치
- 64-bit x86 설치
2. PuTTYgen 열기
3. PuTTYgen 실행 > Load 기본키 선택 > Save private key 클릭 > .ppk로 저장
PuTTY 실행
1. Session > Host Name: AWS 고정 아이피 입력(43.201.221.65)
2. Connection > SSH > Auth > Credentials : Pri
3. Session > Saved Session명 입력 > save
4. Open 후 Accept 클릭
5. 콘솔 login as: ubuntu 입력
FileZilla로 FTP 연결
(https://filezilla-project.org/download.php) 다운로드
1. FileZilla.exe 실행 > 파일 > 사이트 관리자 열기
- 새 사이트
- 프로토콜: SFTP
- 호스트 : 고정 아이피 입력
- 로그온 유형 : 키 파일
- 사용자 : ubuntu
- 키 파일 : *.ppk 선택
- ubuntu 연결 성공!
전체 설정 변경
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
- 콘솔에 date를 입력하면 한국시간과 다르게 나옴
- 위 명령어를 통해 한국시간으로 변경
sudo hostnamectl set-hostname eunji
sudo reboot
- hostname : ip ~~ -> eunji로 변경
- 이후 reboot를 통해 서버 재실행
sudo apt-get update
- 전체 서버 패키지 업데이트를 시켜줌
java 입력
💥 아래 뜨는 명령어 입력하면 Spring Boot 실행이 안되는 문제 생기니 설치하면 안됨!! 💥
sudo apt-get install openjdk-17
- 입력 후 tab 두번 입력하면 관련 명령어 나옴
sudo apt-get install openjdk-17-jdk
- ⭐ 이중 jdk로 설치해야함!⭐
java -version
- 잘 설치되었는지 확인
설치가 잘 되었다면 vscode로 이동!
Gradle for java > task > build > clean, build 실행
Gradle for java > task > build > bootjar
FileZilla 실행
1. bootserver 디렉터리 만들기
2. 로컬에서 lib에 생긴 1.0.1 SNAPSHOT ubuntu/bootserver로 이동
PuTTY 실행
> ls
...
> cd bootserver
>ls
backboard-1.0.1-SNAPSHOT.jar
>sudo java -jar backboard-1.0.1-SNAPSHOT.jar
- Spring Boot 실행
실행이 완료되면 http://43.201.221.65:8080/ 주소창 입력
ctrl + c로 서버 끄기
local.mv.db 원격에 생성됐는지 확인
java -jar backboard-1.0.1-SNAPSHOT.jar
- sudo java -jar backboard-1.0.1-SNAPSHOT.jar를 입력하면 생성되지 않으므로 sudo를 떼고 입력
- local.mv.db 생긴 것을 확인할 수 있음
❌어떤 url은 들어가지고, 어떤 url은 안들어가지는 문제 발생 ❌
application.properties 추가
## H2 추가 설정
spring.h2.console.settings.web-allow-others=true
build.gradle 설정 변경
version = '1.0.2-SNAPSHOT'
FileZilla에서 SNAPSHOT 추가
ubuntu 콘솔 창에서 실행
java -jar backboard-1.0.2-SNAPSHOT.jar
- Spring Boot 실행
- h2-console 연결된 것 확인
- local에 있는 local.mv.db를 ubuntu 파일에 덮어씌우기
java -jar backboard-1.0.2-SNAPSHOT.jar
- ubuntu 콘솔에서 다시 실행
- 이전에 넣어뒀던 데이터가 불러와짐!
🔽전체 요약
- 스프링부트서버 백그라운드 실행 쉘 작성
- > nano start.sh
```shell
#!/bin/bash
JAR=backboard-1.0.2-SNAPSHOT.jar
LOG=/home/ubuntu/bootserver/backbord_log.log
nohup java -jar $JAR > $LOG 2>&1 &
```
- 파일권한 바꾸기(실행가능)
```shell
> chmod +x start.sh
```
- > nano stop.sh
```shell
#!/bin/bash
BB_PID=$(ps -ef | grep java | grep backboard | awk '{print $2}')
if [ -z "$BB_PID" ];
then
echo "BACKBOARD is not running"
else
kill -9 $BB_PID
echo "BACKBOARD terminated!"
fi
```
- 파일권한 바꾸기(실행가능)
```shell
> chmod +x stop.sh
```
- 서버실행
스프링부트서버 백그라운드 실행 쉘 작성
nano start.sh
#!/bin/bash
JAR=backboard-1.0.2-SNAPSHOT.jar
LOG=/home/ubuntu/bootserver/backbord_log.log
nohup java -jar $JAR > $LOG 2>&1 &
- ctrl + s로 저장
- ctrl + x로 나오기
- ls로 start.sh 생성된 것 확인
nano stop.sh
- ctrl + s로 저장
- ctrl + x로 나오기
- ls로 stop.sh 생성된 것 확인
- rw -> read write 읽고 쓰기 권한만 있음
chmod +x start.sh
chmod +x stop.sh
- 해당 명령어로 권한 변경
- 녹색이 뜨면 실행 가능
./start.sh
- 실행
- start.sh를 실행하니까 backbord_log.log 생성
nano backbord_log.log
- 서버 연결과 데이터 잘 들고와지는 것 확인!
'Spring Boot > STUDY' 카테고리의 다른 글
[Spring Boot] JPA 프로젝트 - 비밀번호 찾기 및 변경 기능 구현(1) (0) | 2024.06.27 |
---|---|
[Spring Boot] JPA 프로젝트 - 에러페이지 작업 (0) | 2024.06.27 |
[Spring Boot] JPA 프로젝트 - 조회수 기능 구현 (0) | 2024.06.26 |
[Spring Boot] JPA 프로젝트 - 카테고리 추가 (0) | 2024.06.25 |
[Spring Boot] JPA 프로젝트 - 마크다운 적용 (1) | 2024.06.25 |