AWS VPC에 자바 프로젝트 배포하기

2020. 3. 3. 22:33AWS

위 사진과 같은 클라우드 환경을 구축하고자 한다.

목차

1. VPC 및 서브넷 생성

2. 서버 EC2 생성

3. 서버 EC2에 war 파일 배포

4. DB EC2 생성

5. DB EC2 인스턴스에 MySQL 설치


1. VPC 및 서브넷 생성

한 번에 NAT 게이트웨이를 포함한 퍼블릭, 프라이빗 서브넷을 가진 VPC를 생성한다.

VPC를 설치했을 뿐인데 서브넷까지 함께 생성됨을 확인할 수 있다.

더불어 탄력적 IP 주소를 가진 NAT 게이트웨이까지 생성되었다.

현재 라우팅 테이블에 프라이빗 서브넷은 연결되어있지 않기 때문에 이를 연결해준다.

프라이빗 라우팅 테이블에 NAT 게이트웨이가 잘 설정되어있음도 확인할 수 있다.

여기까지 하면 위 그림과 같이 기본적인 네트워크만 설치된 상황이다.


2. 서버 EC2 생성

리눅스 서버를 선택한다.

비용을 생각하여 프리티어 유형으로 선택한다.

VPC와 서브넷을 지정한다.

http 브라우저를 통해(80번 포트) 톰캣 서버(8080번 포트)를 사용할 것이기 때문에 다음과 같이 보안그룹을 설정한다.

SSH 키페어를 설정한다.

생성한 EC2 인스턴스에 탄력적 IP를 연결한다.

탄력적 IP가 정상적으로 연결되었다.

톰캣 서버를 설치하기 위해 EC2 인스턴스에 연결한다.

PuTTY를 열어 SSH 키를 불러온 후

연결한 탄력적 IP주소를 입력한다.

경고창에는 예를 눌러준 후 다음과 같이 ec2-user를 입력한다.

리눅스 서버에 접속되었다.

sudo yum list

명령어를 입력하면 톰캣 패키지가 있는 것을 확인할 수 있다. 8버전을 깔면 자동으로 8.5가 깔리려나?

sudo yum update

sudo yum install tomcat8-webapps.noarch

톰캣이 설치되었다.

sudo service tomcat8 start

주소창에 다음과 같이 입력하면 톰캣 서버가 정상적으로 작동하는 것을 확인할 수 있다.

음 8.5버전이군 ㅋㅋ


3. 서버 EC2에 war 파일 배포

http://filezilla-project.org

 

FileZilla - The free FTP solution

Overview Welcome to the homepage of FileZilla®, the free FTP solution. The FileZilla Client not only supports FTP, but also FTP over TLS (FTPS) and SFTP. It is open source software distributed free of charge under the terms of the GNU General Public Licens

filezilla-project.org

FileZilla 프로그램은 두 서버 간의 파일 전송을 용이하게 해 준다. 위와 같이 프로그램을 다운로드 한다.

war 파일을 옮길 EC2 서버를 지정한다.

 서버와 연결된 것을 확인할 수 있으며 /home/ec2-user 경로에 war 파일을 넣어줄 것이다.

간단한 드래그앤드롭으로 쉽게 파일을 이동하였다.

sudo mv stepper.war /var/lib/tomcat8/webapps

war파일을 톰캣 webapps 폴더로 이동하였다.

cd /var/lib/tomcat8/webapps/

ls -al

sudo find / -name server.xml

브라우저에서 프로젝트 파일을 불러올 수 있도록 rootpath를 변경하고자 한다.

http://13.124.192.20:8080/stepper/

브라우저 주소창에 다음과 같이 입력하면 화면이 뜬다.

sudo find / -name server.xml

cd /etc/tomcat8/

sudo vi server.xml

기본 주소를 수정하기 위해 server.xml을 수정한다.

<Context path="" docBase="stepper" reloadable="true"/>

 

sudo service tomcat8 restart  

https://myjamong.tistory.com/8

 

[CentOS 7] Apache Tomcat 8.5.24 설치 :: 마이자몽

아파치 톰캣 서버를 사용하면서 막상 아파치 톰캣이 무엇인지... 아직도 확실하게 알지는 못하는 것같다. 조금 더 쉽게, 이해하기 편하게 간단하게 설명을 해볼려고 한다. apache : 재단 이름이고, get, post 와..

myjamong.tistory.com

https://ithub.tistory.com/58

 

AWS - EC2 서버 Java 1.8로 upgrade 하는 방법

안녕하세요. 오늘은 Amazon Web Service에서 EC2 서버 java 버전을 upgrade 하는 방법에 대해서 알아보겠습니다. Java version 확인하는 방법 아래 명령어를 사용하여, 현재 서버에 설치된 자바 버전을 확인합니다..

ithub.tistory.com

톰캣 관련 명령어가 아예 듣질 않아서 EC2를 재생성하고 위 블로그를 참조하여 다시 설치하였다 ㅠㅠ 자바 설치하고 환경변수 관련 문제가 있는 듯 하였다.

 

또한 한 가지 더 해주어야 할 것이 있다.

war 파일 안에 root-context.xml 파일에 보면 jdbc 관련 설정에 연결 IP를 DB EC2 인스턴스 주소로 설정해주어야 한다.

vi 명령어를 사용하여 수정해주었다. 그래야 맨 마지막 사진처럼 DB를 사용하여 내 데이터가 저장되는 것을 확인할 수 있다.

필수!

서버 EC2 인스턴스 구성은 이렇게 완성되었다.


4. DB EC2 생성

DB용 EC2는 위와 같은 설정을 하였고 연결된 서브넷, 보안그룹만 달리하여 생성하였다.

PuTTY를 열어 서버용 EC2에 접속할 때와 과정이 비슷하다.

먼저 호스트 주소에 서버를 설치한 EC2 인스턴스의 공인 IP를 입력한다.

포트는 22이고 주소는 사설망 EC2 주소:22를 적어준다.

Data 카테고리로 가서 접속할 아이디에 ec2-user를 입력한다.

이 화면은 현재 NAT 게이트웨이에 접속이 된 상태이다. 이 PuTTY 창은 열린상태로 둔다.

그리고 새 PuTTY를 연다.

Host Name에 localhost를 입력하고 다시 Data 카테고리에 가서 사용자 이름에 ec2-user를 입력한다.

SSH키를 불러온 후 Open을 누른다.

사설망 EC2에 접속하게 되었다.

https://mozi.tistory.com/191

https://cloud.hosting.kr/aws-ec2/


5. DB EC2 인스턴스에 MySQL 설치

sudo yum update

sudo wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm  

sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm

sudo yum install mysql57 mysql57-server

sudo service mysqld start

여기까지 입력하면 MySQL 5.7버전을 설치하고 실행하는 것까지 진행된다.

sudo mysqld stop

sudo mysqld_safe --skip-grant-tables &

mysql -u root -p

MySQL에 접속되었다.

use mysql

update user set authentication_string=PASSWORD("비밀번호") where User='root';

flush privileges;

exit

sudo service mysql restart

mysql -uroot -p비밀번호

exit

sudo chkconfig mysqld on

root 계정에 비밀번호를 설정하고 재부팅을 해도 서비스가 자동 시작되도록 설정하였다.

use mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드' WITH GRANT OPTION; 
GRANT TRIGGER ON *.* TO 'root'@'%' WITH GRANT OPTION; 
GRANT SUPER ON *.* TO 'root'@'%'; 
FLUSH PRIVILEGES;

외부에서도 root 유저를 통해 mysql에 접속하도록 설정하였다.

CREATE TABLE user(
id INT(10) PRIMARY KEY NOT NULL AUTO_INCREMENT,
username VARCHAR(45) NOT NULL,
password VARCHAR(100) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE token(
token VARCHAR(100) PRIMARY KEY NOT NULL UNIQUE,
user_id INT(11) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE post(
id INT(10) PRIMARY KEY NOT NULL AUTO_INCREMENT,
user_id INT(11) NOT NULL,
title VARCHAR(45) NOT NULL,
content VARCHAR(45) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE follow(
followee_id INT(11) NOT NULL,
follower_id INT(11) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (followee_id,follower_id)
);

CREATE TABLE feed(
user_id INT(11) NOT NULL,
followee_id INT(11) NOT NULL,
post_id INT(11) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (user_id,followee_id,post_id)
);

위와 같이 스키마와 테이블을 생성한다.

 


 

최종적으로 서버와 DB 모두 설치가 되어 정상적으로 프로젝트가 작동함을 확인할 수 있다.

AWS에서 생성한 서비스들과 설치한 여러 프로그램들을 도식화하면 위와 같다.

'AWS' 카테고리의 다른 글

AWS Certified Cloud Practitioner 연습문제(5) 오답정리  (0) 2020.02.25
고가용성  (0) 2020.02.07