SpringBoot Maven AWS EC2 배포 / mysqldump
작업 환경
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 랑 ubuntu 비번 설정해줘야 한다. (초반에 putty 실행할때 ubuntu 로 그냥 들어오고.. sudo 랑 ubuntu 비번 설정 안해줘서 그럼)
비번 설정 방법은 아래 링크 참고.
[AWS]EC2- ubuntu 계정 초기 비밀번호
AWS ec2에서 ubuntu 서버를 만들면, 제일 처음 private key로 접속하게 될 것이다. 접속하면 username에 ubuntu를 입력하면 접속이 된다. private key로 접속하였기 때문에 ubuntu 나 root 계정의 password는 따로..
serina-the-best.tistory.com
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
이런 방식으로 모든 테이블 하나씩 옮겨줬음
해보고 리눅스에서 데이터 잘 들어왔나 확인하면 잘 들어와 있다.
프로젝트의 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 파일 안보임..
[SPRING] AWS에 MAVEN사용해서 배포 - (4) Git clone / Maven Compile, package :: 디벨로프로 (tistory.com)
[SPRING] AWS에 MAVEN사용해서 배포 - (4) Git clone / Maven Compile, package
목표 1) 깃으로 프로젝트 불러오기 2) 메이븐으로 jar파일 생성 3) java로 서버 실행 4) 데이터 입력 확인 1. Git 을 사용하여 프로젝트 불러오기 깃으로 프로젝트를 불러오는 것은 정말 간단하다 % git
developro.tistory.com
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 하고 재빌드!