본문 바로가기
공부 및 정리/기타 정리

스프링-MYSQL 프로젝트 EC2에 올리기

by 스파이펭귄 2024. 2. 6.
728x90

MYSQL-스프링 프로젝트 EC2에 올리기

Mysql을 DB로 사용하는 스프링 프로젝트를 배포해야 할 일이 있어 이를 정리해본다.

먼저 AWS 클라우드에서 EC2 인스턴스를 만들어준다.

EC2 인스턴스를 생성하는 과정은 기본적인 과정이지만 혹시 모르는 사람들을 위해 작성해본다.

AWS에 로그인 하면 위와 같은 페이지가 나오고, 검색창에 EC2를 검색해 EC2에 들어가면 아래 화면이 나온다.

아래 주황색 버튼으로 되어있는 인스턴스 시작을 눌러준다.

위 그림처럼 이름은 내가 하고 싶은 이름으로 정한 후 Application and OS Images에서 Ubuntu를 선택해준다.

인스턴스 유형은 프리티어를 사용하기 위해서 t2.micro를 사용했는데, 혹시라도 쾌적한 환경에서 서비스를 운영하고 싶다면 적절한 인스턴스로 변경해주자.

이후 새 키 페어 생성을 눌러 키 페어를 만들어 주자. 이름은 마음대로 정하면 되고, RSA, .pem 확장자로 설정한다.

이후 보안 그룹을 적절하게 새로 만들어 줄 것이기에 일단 아무것도 건들이지 말고 걍 넘어가자.

스토리지 구성은 30 G 까지는 무료이므로 30으로 잡아주고 인스턴스를 시작해주자.

이후 인스턴스에 가보면 새로 만든 인스턴스가 생성되어있다.

좌측 네비게이션 바에서 보안그룹에 들어가 보안그룹 생성을 눌러준다.

이름은 걍 맘대로 정한 후 인바운드 규칙을 위와 같이 설정해준다.

  • 사용자 지정 TCP: 스프링 부트 기반 서버를 열어줄 것이기에 사용자 지정으로 8080 포트로 설정해주었고, 누구나 들어올 수 있도록 Anywhere-IPv4를 사용했습니다.
  • SSH: 원격 EC2 인스턴스에 접속시 사용하는 ssh 관련 방화벽으로 저는 여러 팀원들이 사용하게 만들어주기 위해서 Anywhere-IPv4로 설정하였습니다. 좀 더 보안에 신경쓰고 싶다면 지정 아이피를 사용해 주세요.

보안그룹을 생성하였다면 다시 인스턴스로 돌아와 인스턴스에 우측 클릭 후 보안 그룹 변경을 해줍니다.

이전에 만든 보안 그룹을 선택해줍니다.

이후 인스턴스 연결에 들어가 퍼블릭 DNS를 통해 인스턴스에 연결하기를 복사해줍니다.

[MobaXterm] 모바엑스텀 설치 및 사용법(Linux SSH 접속)

 

[MobaXterm] 모바엑스텀 설치 및 사용법(Linux SSH 접속)

이번에 Linux 환경을 사용할 때 매우 유용한 Tools인 MobaXterm 설치 및 사용법에 대해 정리할 것입니다. [ 목차 ] MobaXterm 설치 방법 MobaXterm 사용법(SSH 접속 및 FTP 등) MobaXterm이란? 설치 방법에 대해 정

backendcode.tistory.com

복사 후 MobaXterm을 사용해 연결해줍니다. (MobaXterm 설치는 위 링크 참고)

아래 순서대로 진행합니다.

  1. 좌상단 Session 클릭
  2. Session setting이 뜨면 SSH 클릭
  3. Remote host에 아까 복사한 퍼블릭 DNS 붙여넣기
  4. Specify username에 ubuntu 사용
  5. Advanced SSH setting에서 Use private key 체크 후 아까 받은 .pem 파일 넣어주기
  6. OK.

이후 Sessions에서 새롭게 생성된 session에 들어가줍니다.

EC2에 자바를 설치해줍니다.

sudo apt install openjdk-원하는 버전-jdk

원하는 버전을 잘 써넣어 설치하길 바랍니다.

이후 git을 설치해줍니다.

sudo apt-get install git

# 설치 확인용
git --version

이후 스프링 프로젝트를 잘 내려 받습니다.

스프링 프로젝트를 빌드 하기 전에 저같이 무료 인스턴스를 사용하신 분들은 램이 작아 빌드가 잘 되지 않을것 입니다. 이를 위해서 swap memory를 추가해줍니다.

AWS EC2 프리티어에서 메모리 부족현상 해결방법

 

AWS EC2 프리티어에서 메모리 부족현상 해결방법

AWS free tier를 사용하다보면 2%가 부족할 때가 있다. AWS 프리티어는 가난한 대학생에게는 한줄기 빛과 같은 존재인데, AWS의 프리티어라서 적게 돈이 나가는 것도 좋고, 실제로 이것저것 해볼 수 있

sundries-in-myidea.tistory.com

스왑 메모리 설정은 위 블로그를 참조해주세요.

설정 후 htop을 보면 위와 같이 swp 메모리가 생성된 것을 확인할 수 있습니다.

또한 우리 프로젝트는 MYSQL을 DB로 사용하기에 MYSQL을 설치해야합니다.

apt-get update
apt-get install mysql-server

mysql --version

위 명령어를 통해 mysql 을 설치합니다.

mysql -u root -p

위 명령어를 통해 mysql에 접속합니다. 이때 아직 비밀번호가 없기 때문에 그냥 엔터를 눌러주면 됩니다. 들어간 후에는 비밀번호를 바꿔줘야만 합니다.

use mysql

// 5 버전 사용자
mysql> update user set password=password("암호") where user="root";

// 8 버전 사용자
mysql> alter user "root"@"localhost" identified with mysql_native_password by "암호";

# 이후 암호 적용
FLUSH PRIVILEGES;
exit

아까 확인한 버전에 따라서 명령어를 다르게 사용해줍니다.

이제 외부 접속을 허용해야합니다.

sudo su
cd/etc/mysql/mysql.conf.d
vi mysqld.cnf

위 명령어를 통해 mysql의 config 파일에 접근할 수 있습니다.

vi 내에서 bind-address를 찾아서 아래처럼 수정해주면 됩니다. (수정은 i)

bind-address = 0.0.0.0

esc + :wq로 vi를 나온 후 service mysql restart 로 MYSQL을 재시작 합니다.

이후 spring project에 들어가 ./gradlew build 명령어를 통해 빌드해줍니다. 빌드 완료시 build 폴더가 생성됩니다.

cd build/libs
ls

위 명령어로 이동 후 파일 목록을 보면 jar 파일이 생성된 것을 확인할 수 있습니다.

nohup java -jar jar파일이름.jar &

위와 같은 명령어로 실행하면 됩니다. 이때 &는 백그라운드에서 실행하라는 의미입니다.

이후 백그라운드에서 실행중인 프로세스를 확인하려면 jobs 명령어로 확인할 수 있습니다.

또 백 그라운드로 실행중인 프로세스를 가져오려면 fg %프로세스 번호 를 통해 가져올 수 있고, ctrl + c로 종료할 수 있습니다.

[Linux] tmux 설치와 사용법 및 예제 정리

 

[Linux] tmux 설치와 사용법 및 예제 정리

원격 서버에 접속해서 작업을 하다보면 터미널 화면을 분할해서 사용해야하는 경우가 많다. 특히 하나의 터미널 창에 여러개의 터미널 화면을 분할해서 사용하는 'Terminal multiplexer'라는 종류의

hbase.tistory.com

아니면 tmux를 사용하면 더 유연하고 직관적이게 프로세스들을 관리할 수 있습니다. (공부해 보는 것을 추천!)

이후 서버에 접속하기 위해서 다시 aws의 인스턴스로 가서 원하는 인스턴스를 클릭 후 아래에 퍼블릭 IPv4DNS의 주소를 복사해 들어가면 됩니다.

 

다시 서버를 켜고 싶을 때 이미 포트를 사용중인 경우가 있습니다.

sudo apt-get install net-tools

위와 같이 net-tools를 설치하고 아래 코드를 통해 8080 포트를 점유하는 프로세스를 확인한 후 kill을 통해 프로세스를 죽인 후 다시 켜주면 됩니다.

sudo netstat -nap | grep :8080
# 아래와 같은 형식으로 결과가 나옴.
# tcp6       0      0 :::8080                 :::*                    LISTEN      포트 번호/java
sudo kill -9 포트 번호

 

Reference

728x90

'공부 및 정리 > 기타 정리' 카테고리의 다른 글

[SQL] DELETE, TRUNCATE, DROP  (0) 2024.04.24
동기, 비동기, Blocking, Non-Blocking  (0) 2024.04.14
CAP 정리  (1) 2024.03.06
트랜잭션과 ACID  (0) 2024.03.05
Docker with WSL  (0) 2023.04.16