FINAL PROJECT

SpringBoot Maven AWS EC2 배포 / mysqldump

asso 2022. 8. 24. 01:15

작업 환경

Eclipse Maven Project
Spring Boot (Controller + JSP)
Java
Javascript
Html / CSS
BootStrap5
jQuery
MariaDB

 


 

AWS EC2 인스턴스 생성

지역은 서울로 함.

t2.micro 로 (ubuntu) 인스턴스 생성해줌.

이때 보안키도 새로 생성해줌. (원래 있으면 그거 쓰는데 난 없어서 새로 생성함. (awsSeoul)

 

보안그룹으로 들어와서

default 말고 인스턴스 생성하며 생성된 다른 보안그룹(launch-wizard-1) 을 선택한 후 인바운드 규칙을 추가해 준다.

 

인바운드 규칙은 2가지 추가해줬다.

하나는 apache-tomcat(포트 8080), 하나는 mariadb 용(포트 3306).

 

putty 실행

putty 를 실행시켜서 아래 저 Host Name에는 AWS 인스턴스의 퍼블릭 IPv4 DNS 주소를 복붙해 넣어준다.

옆의 Port 는 22인지 확인

 

 

그리고 SSH - Auth 에서 프라이빗 키를 넣어주는데... 우리가 이전에 만들었던 키를 넣어주면 된다.

그리고 나서 OPEN.

 

 

실행됐을 때 ubuntu 로 로그인하면 된다.

 

그리고 나서 시스템 업데이트 먼저 해준다.

sudo apt-get update

 

jdk, vim 설치

아래 코드를 쳐서 jdk 11 버전을 설치한다.

sudo apt-get install openjdk-11-jdk

자바와 javac 버전도 확인해준다.

java -version javac -version​

vim 설치는 아래와 같이 해주면 된다.

sudo apt-get install vim​

 
 

apache-tomcat 9 설치

윈도우 브라우저에서 톰캣 사이트에 들어간 다음,

tomcat9 의 tar.gz 파일 링크를 복사해준다.

 

그리고 나서 putty 에서 아래와 같이 입력해준다. 우클릭을 하면 복사한게 붙여넣기 된다.

이렇게 쓰면 다운로드 됨.

wget [복사한 링크 주소]

 

ls 를 쳐서 잘 다운 받아졌는지 확인하고...

 

압축을 풀어준다.

tar xvf apache-tomcat-9.0.65.tar.gz

 

이제 톰캣 실행해줌...

./apache-tomcat-9.0.65/bin/catalina.sh run​

 

그럼 윈도우 브라우저에서 퍼블릭 IPv4 주소:8080 을 치게 되면 톰캣 페이지가 뜬다.

MariaDB 설치

아래 코드를 입력해 MariaDB 를 설치해준다.

sudo apt-get -y install mariadb-server

 

Mariadb 실행되고 있는지 보고 싶으면 아래 코드를 입력해본다.

systemctl status mariadb

MariaDB 접속한다.

sudo mysql

 

테이블을 넣어줄 데이터베이스를 만들어준다.

create database icampdoit;​

 

user1 생성

비번을 입력하고 접속할 유저, user1 을 생성하고 icampdoit 데이터베이스의 모든 권한을 부여한다.

create user 'user1'@'%' identified by '[비번]';
grant all privileges on icampdoit.*to'user1'@'%';

 

 

팀원들이 mariadb 접속할때

퍼블릭IPv4 주소로 mariadb 들어가기 (원격)

mysql -u user1 -p -h [퍼블릭 IPv4 주소]

=> 근데 단박에 안돼서 아래 설정해줌.

 

 

MariaDB 외부 접속 설정

=> 아래 블로그를 참고하면 된다.

MariaDB 외부접속 설정 & 계정 생성 (dveamer.github.io)

 

Dveamer

현실에서 살고 있지만 이상에 대한 꿈을 버리지 못한 몽상가의 홈페이지 입니다. 개인적인 기록을 주 목적으로 하며 일상과 프로그래밍 관련 글을 포스팅합니다.

dveamer.github.io

 

 

아래 코드를 입력한 후에

bind_address 부분을 주석처리해준다. (#bind_address)

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

그렇게 주석처리를 해줬으면, 아래 코드를 입력해 실행시켜준다.

service mysql restart

 

근데 auth(권한) 에러가 뜬다.

sudo 비번 설정해주고 (나는 그냥 123456 으로 설정함)

sudo passwd root

ubuntu 도 비번 설정해줌

sudo su -
passwd ubuntu

 

 


 

그 다음 다시 service mysql restart 해서 들어가면 들어가짐

ubuntu 비번을 입력해주면 된다.

 

그리고 이제 mysql 실행

 

 

윈도우 DB dump 하기

RDS 인가.. 그걸 사용하는 방법도 있지만 mysqldump 를 사용해서 윈도우에서 썼던 DB를 그대로 복사해오는 방법도 있다.

우리는 후자를 사용하기로 함.

아래와 같은 sql 문을 윈도우 mariadb 프롬프트에 쳐서 리눅스(aws) icampdoit 데이터베이스에 migration (dump) 하자.

(윈도우의 icampdoit 데이터베이스의 go_api 테이블을 지금 aws의 icampdoit 데이터베이스에 복사해줌)

mysqldump -u root -p[비번] icampdoit go_api | mysql -h [퍼블릭 IPv4주소] -u user1 -p[비번] icampdoit

ex

 

이런 방식으로 모든 테이블 하나씩 옮겨줬음

해보고 리눅스에서 데이터 잘 들어왔나 확인하면 잘 들어와 있다.

 

프로젝트의 DB 주소 바꾸기

하기전에 프로젝트의 localhost 를 ip 주소로 바꿔야 한다.

application.properties에서 원래 localhost 였던 걸 퍼블릭 IPv4 주소로 넣어준다.

 

새로고침하고 실행해보면 내 DB가 아니라 리나언니가 dump한 DB 내용이 나와있다.

 

Git 설치

putty의 linux 에서 아래 코드를 입력해 git 을 설치해준다.

sudo apt install -y git

하고 버전 확인

git --version
 

 

Maven 프로젝트 배포

=> 아래 링크를 참고하자.

스프링 부트 프로젝트 Git + Maven + AWS EC2 배포하기 | Flashlog (miniminis.github.io)

 

스프링 부트 프로젝트 Git + Maven + AWS EC2 배포하기 | Flashlog

스프링 부트 프로젝트 Git + Maven + AWS EC2 배포하기 연차 프로젝트의 마지막 배포 작업, 바로 Spring boot 서버 배포이다. 보통 구글링을 해보면 Boot 프로젝트는 Maven 이 아닌 Gradle 로 설정한 경우가 대

miniminis.github.io

 

 

먼저 GitHub 의 Repository 에 들어가서 주소를 복사해온다.

clone https꺼 복사

 

putty 에 icampdoit 폴더 만들고

이동해서

mkdir icampdoit
cd icampdoit​

 

 

git clone 하고 아까 복사한거 붙여놓기

(아래는 master 브랜치 지정해서 clone 해오는거)

git clone -b master --single-branch [repository 주소 복사한거]

그럼 깃허브 username 과 password 를 치라고 나오는데...

username 은 내 깃허브 이름,

그리고 password 는 깃허브 토큰 받은걸 복사해서 붙여넣기 하면 된다.

토큰 말고 일반비번 입력하면 아래와 같이 에러 뜸.

 

그리고 icampdoit 으로 디렉토리 이동(icampdoit 안에 icampdoit 디렉토리임..) ( ls 했을때 .mvnw 있어야 함)

cd icampdoit

그리고 나서 아래 3번 ./mvnw clean package 실행시켜야 하는데 권한없다고 에러 뜸.

(wrapper 가 없다고 에러남..)

 

 

그래서 아래 코드 입력해 maven 설치해주고

sudo install maven

아래 코드 입력해줌

mvn -N io.takari:maven:wrapper

그리고 나서 다시 아래 코드 입력했더니 무언가 실행 됨.

./mvnw clean package

하지만.. Build Successs 나와야 하는데 Build Failure 나옴

 

에러 원인보니까 'bootalbum01' 뭐 어쩌고 하는 테스트 파일 이름과 경로가 실행 파일과 달라서 인듯하여

 

 

아래 저 src/test/java 안에 있는

com.example.controller 의 Bootalbum01ApplicationTests.java 파일을 수정하기로 했다.

com.example.controller -> com.example.main 으로 변경

위에 저거랑 패키지 이름도 맞추고, 파일 이름도 맞춤.

 

그리고 나서 다시 아래코드를 실행시켰더니 이번엔 build success 나옴

./mvnw clean package

 

 

그 다음, target 폴더가 있나 확인해보고, target 파일로 이동한다.

ls -al cd target

target파일 안에 빌드된 jar 파일이 있는지 확인하고 이를 실행한다.

java - jar [jar 파일 이름] &

=> 근데 jar 파일 안보임..


mvn package
 
 

다시 target 폴더로 이동해서 보면

jar 파일이 들어가 있다.

 

그리고 나서 다시 아래 코드 쳐줌

java -jar [jar 파일 이름]

 

그럼 스프링 부트 실행되듯이 이렇게 돼서

 

브라우저에서 이제 주소 쳐봤는데...404 에러 뜸

[IPv4 주소]:8080/home.do

=> jar 파일이 pom.xml 이 있는 파일에 함께 있어야 하는데 현재 다른 디렉토리에 있어 생기는 오류라 함.

 

404 에러 해결

=> 따라서, pom.xml 있는 위치로 jar 파일을 옮겨준다.

먼저 target 디렉토리 안에서 ls-a 를 해서 jar 파일이 거기 있는지 확인하고, 바로 윗 단계인

icampdoit 으로 옮겨준다. (여기에 pom.xml 있어서)

ls -a 
mv bootalbum01-0.0.1-SNAPSHOT.jar ../​

 

icampdoit에 jar 파일 잘 들어갔는지 확인

 

그리고 나서 만약에 전의 jar 파일이 실행되고 있으면 실행되고 있는 걸 kill 해줘야 함

ps -ef | grep java kill -9 [코드번호]

 

다음, 다시 jar 파일을 실행시켜준다.

java -jar [jar 파일 이름]

 

그럼 브라우저에서 IPv4 주소:8080/home.do 해서 들어가면 어디서든 사이트 접속이 가능 !!!

 


 

카카오로그인 에러

사이트에 접속해서 카카오로그인 버튼을 누르면 뭐 관리자 어쩌고 팝업이 뜬다.

redirect URI 에서 도메인 등록을 안해줘서 그렇다.

localhost 외에 이제 IPv4 를 사용한 주소도 추가해주자

 

eclipse 수정 후 재배포

먼저 jar 파일을 삭제해줘야 하는데,

target 에 있던 origianal.jar 이랑

icampdoit에 있던 jar 파일 삭제한다.

rm -r [jar 파일 이름]

 

수정한 내용 소스트리에서 push 하고, pull 받음...

그리고 여기 ubuntu 에서도 git 을 사용해 pull 받아준다.

우리는 master 브랜치를 사용하기 때문에 아래와 같이 입력해줌.

하고나서 또 username 과 password(토큰) 입력해줘야 함.

git pull [respository 주소] master

pull 내용보면 내가 수정하고 push 한 것들 뜸.

 

아래 코드로 jar 다시 생성( pom.xml 있는 icampdoit 디렉토리)

mvn package

아래 코드 입력 ( pom.xml 있는 icampdoit 디렉토리)

./mvnw clean package

그리고 나서 jar 파일 옮기기

target 에서

mv [jar 파일명] ../

로 바로 윗 폴더인 icampdoit 으로 옮겨줌 (jar가 pom.xml과 같은 파일 안에 있어야 해서)

 

그다음, 실행하면 재배포되어 수정한 내용이 반영된 웹사이트를 실행할 수 있다.

java - jar [jar 파일 이름]​

 

권한 부여

./mvnw clean package 할 때, 권한없다고 permission denied 나오면

sudo chmod -R 777 mvnw
 

pull 받아도 수정 적용 안 될 때

server kill 하고 재빌드!