본문으로 바로가기

AMI (이미지 만들기) - web,tomcat + database

category AWS 2021. 6. 10. 00:58
반응형

AMI(Amazon Machine Image):  아마존 머신 이미지는 인스턴스를 시작하는 데 필요한 정보를 제공한다.

인스턴스를 시작할 때 AMI를 지정 해야하고, 동일한 구성의 인스턴스가 여러 개 필요할 때는 한 AMI 에서 여러 인스턴스를 시작할 수도 있다. 

 

AMI 의 구성요소

  • 1개 이상의 AmazonEBS 스냅샷 또는, 인스턴스 스토어 기반 AMI의 경우. 인스턴스의 루트 볼륨에 대한 템플릿
  • AMI를 사용하여 인스턴스를 시작할 수 있는 AWS 계정을 제어하는 시작 권한
  • 시작될 때 인스턴스에 연결할 볼륨을 지정하는 블록 디바이스 매핑

 

* AmazonEBS: EC2에서 사용하도록 설계된 사용하기 쉬운 고성능 블록 스토리지 서비스.

* 블록 스토리지 : 데이터를 소프트웨어 애플리케이션과 가상머신이 빠르고 효율적으로 액세스할 수 있는 블록 형태로 저장합니다 (가상의 하드디스크)

 

실습 (EC2 인스턴스 두개(tomcat, db)를 연동 시켜 웹프로젝트를 실행 시키고, 웹서버 구성 인스턴스를 AMI로 만들기)

1. EC2 2개 생성 (프리티어) - Centos7 기반

이미지는 Centos7
네트워크 대역은 기존에 내가 생성한 VPC를 사용해 줬다.

2. Putty로 원격 접속

marketplace에 있는 centos를 사용하여 생성 했을 경우, 초기 로그인은 centos로 해야한다.

여기 까지는 두개의 인스턴스 모두 공통적으로 진행해야 할 과정이고 이제 부턴 tomcat 인스턴스, mysql 인스턴스 둘로 나눠서 진행하도록 하겠다.

1) Tomcat 인스턴스

  • Tomcat 설치 wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.46/bin/apache-tomcat-9.0.46.tar.gz  
  • 압축 해제(tar xvfz) 후 apache-tomcat-9.0.46 > tomcat 으로 이름 변경 후 /usr/local/로 이동.
  • Java 설치 Spring 웹 프로젝트를 java 11.0.11 버전으로 작성 하였기 때문에 java11버전 다운로드 
  • yum -y install java-11-openjdk java-11-openjdk-devel
  • java 환경변수 등록
  • alternatives --config java (11버전 선택)
  • cat > /etc/profile.d/java11.sh << EOF
  • export PATH=\$PATH:\$JAVA_HOME/bin
  • export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64
  • EOF
    java -version
  • DB와 연결해야 하기 때문에 mysql-connector 다운로드, mysql client server 도 다운로드(원격 접속을 위한)
  • yum install mysql
  • wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-8.0.24.tar.gz
  • 압축 해제 후 mysql-connector.jar 파일 /usr/local/tomcat/lib/ 디렉토리로 이동. (mv)
    usr/local/tomcat/lib/ 디렉토리 
  • war 파일 옮기기. (winscp를 사용)
  • Permisiion denied가 뜰 경우 일시적으로 권한 777 허용.
  • war파일 /usr/local/tomcat/webapps/ 로 옮긴 후 tomcat 서버 실행(usr/local/tomcat/bin/catalina.sh run하면 자동으로 war 압축해제가 진행 하면서 실행 로그를 보여줌.

2) DB 인스턴스

 

  • mysql 설치
  • wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
  • sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
  • yum install mysql-community-server mysql mysql-libs mysql-devel mysql-server
  • cat /var/log/mysqld.log | grep 'password'  // 초기 비밀번호 확인 (mysqld 실행 후) 
  • mysql_secure_installation 으로 비밀번호 설정.
  • 웹 프로젝트와 연동되는 DB 생성 , 원격접속이 가능한 유저 생성, db에 모든권한 원격 접속 유저에 주기.
  • CREATE DATABASE [DB명]; CREATE USER '[아이디]'@'%' IDENTIFIED BY '[PASSWORD]';
  • GRANT ALL PRIVILEGES ON *.* TO '[아이디]'@'%' identified by '[PASSWORD]';
  • FLUSH PRIVILEGES;  // 설정 적용

이렇게 설정 해 놓은 인스턴스를 AMI로 나만의 이미지로 만든 다음 새로운 인스턴스를 생성할 때 저 이미지 파일을 쓰려고 한다. 

간단하게 웹서버 public ip 주소로 접근해서 웹 사이트 확인 완료.

AMI 생성

이미지 생성 클릭 하고 이름을 정해준다면 AMI에 등록이 완료 된다.

반응형