본문 바로가기

Project

[프로젝트 Day 2] EC2 인스턴스에서 스프링 부트 프로젝트 배포하기. + MYSQL 설치 및 연결하기.

1. 스프링부트 프로젝트 서버로 업로드 하기.

서버에 작성한 스프링부트 프로젝트를 보내는 방법은 github를 통해 업로드하기로 결정했어요. 

왜냐면 서버에는 오류가 없는 완성된 프로젝트만 올라가는게 좋고, 협업 과정에서 github에  merge  과정에서 일차적인 오류를 디버깅 할 수 있기 때문입니다.

 

우선 ec2 환경에서 git 을 설치해야 하는데 다음 명령어를 입력해 주세요.

여기서 sudo  는 관리자 권한으로 실행 과 유사합니다.

git 이 성공적으로 설치 되었는지 

다음 명령어로 확인해 보세요.

성공적으로 설치가 되었다면, 업로드 해둔 git project 를 클론 또는 pull 해 옵니다.

저는 MVN 패키지를 만들었기 때문에 다음과 같은 화면이 나와요.

Gradle 로 package 만드는 방법은 추후에 업로드 할게요

다음과 같은 화면에서 

MVN package

를 입력하면 해당 프로젝트를 패키지화 해줍니다. 시간이 조금 걸려요~

 

성공적으로 패키징이 끝나면, target 폴더로 들어가 줍니다.

여기서 대부분 jar 파일이 생성 되실거에요. 저는 교육과정에서 jsp 를 먼저 배워서 jsp 파일은 jar 로 배포가 되지 않기 때문에 별도 설정을 통해 war 로 바꿔 주었습니다. 별도 설정 방법은 pom.xml 에 패키징 방식을 선언해 주면 돼요.

Project 태그 안에 아무곳에나 해당 설정을 넣어주면 됩니다.

그럼 jsp 파일이 성공적으로 패키징 됩니다.

jsp 파일이 없으신 분들은 jar 파일로 진행해도 무관해요.

 

어쨋든 생성된 빨간파일  을 실행해주면 배포가 끝 납니다.

실행 방법은 다음과 같습니다.

java -jar 빨간파일이름

 

그렇게 성공적으로 실행이 되었다면. 해당 콘솔을 끄지 않은채로 해당 파일에 접속을 시도해 볼게요.

 

해당 주소를 복사 한 후, 스프링 부트 프로젝트는 8080 포트를 사용하니, 주소 뒤에 :8080 을 붙여 주면, 해당 프로젝트의 index파일과 연결이 될거에요. 만약 안됐다면 보안 규칙을 추가해 줘야 하는데요.

 

인바운드 규칙에 8080포트를 넣어주세요

 

그러면 성공적으로 연결 되는걸 확인할 수 있습니다.

 

 

2. DB 연결하기

aws 에서 제공하는 RDS 가 있지만, 현재 프로젝트는 많은 데이터를 필요로 하지 않아서, EC2 서버에 mysql 서버를 설치하여 운영하기로 결정했고, 이 글에서는 EC2 서버에 mysql 서버를 설치하고 연결하는 방법을 소개할게요.

우선 EC2 서버에 mysql-server 를 설치해 줘야 하는데 명령어는 다음과 같습니다.

 

sudo apt-get install mysql-server

 

그 후, sql 서버에 root user 로 접근하여 권한 설정을 해줘야 하는데요. 명령어는 다음과 같습니다.

mysql -u root -p

루트 유저로 로그인하면 처음엔 비밀번호가 없으므로 그냥 enter!

이제 shell 이 mysqs> 로 바뀌었나요? 그러면 접속이 된겁니다.

그러면 비밀번호 세팅을 위해 다음 명령어를 입력하세요.

use mysql
mysql> alter user "root"@"localhost" identified with mysql_native_password by "암호";

암호 설정 후,

FLUSH PRIVILEGES;

변경사항 저장.

 

이제 조금 복잡한데요. 관리자 권한을 실행하여 루트 폴더로 들어갑니다

sudo su
cd /

 

여기서 etc/mysql/ 하위 폴더에서 mysqld.cnf 를 찾은 후 vi 에디터로 수정해 주세요.

bind-address와

mysqlx-bind-address 를 지워주시거나 주석처리 해주시면 됩니다. 

이 과정이 필요한 이유는 기본적으로 MySQL은 127.0.0.1 (localhost)로 바인딩되어 있어 로컬 호스트에서만 접속할 수 있습니다. 이를 변경하여 특정 IP 주소나 0.0.0.0으로 설정하면 원격에서 접속할 수 있게 됩니다.

 

 

마지막으로 

sudo restart mysql

으로 mysql 을 재 시작 해 주시면 DB 관련 세팅이 끝납니다.

보안규칙에 3306 번 포트를 열어 주시는거  잊지 마세요~!

 

그런데 문제가 하나 남았는데요.

mysql 포트를 상시 열어 두어야 스프링 부트 프로젝트에서 언제든 접근 할 수 있습니다.

또한, ec2 환경에서 DB작업을 하는것 보다 로컬 워크밴치 환경에서 DB 작업을 하는게 수월하다 보니, mysql-server 의 포트를 외부에서도 접근할 수 있는 세팅을 해 보겠습니다.

 

mysql> create user 'root'@'%' identified by '[password]';
mysql> grant all privileges on *.* to 'root'@'%' with grant option;

 

루트 자리에 DataBase를 만든 계정을 입력해 주시고 password 자리에는 계정의 비밀번호를 넣어 주세요.

sudo service mysql restart
sudo ufw allow out 3306/tcp
sudo ufw allow in 3306/tcp
sudo service mysql restart

 

권한을 설정해서 mysql 포트를 열어줍니다.

 

이제 모든 설정이 끝났으니, 프로젝트를 열심히 만들어 볼게요~~!!