PEACHCONG

[프로젝트 배포 #5] AWS를 통해 서버 구축하기 (Java / Tomcat / 방화벽 / 포트포워딩) 본문

Project

[프로젝트 배포 #5] AWS를 통해 서버 구축하기 (Java / Tomcat / 방화벽 / 포트포워딩)

피치콩 2024. 1. 24. 16:22

https://peachcong.tistory.com/43

 

[프로젝트 배포 #3] AWS를 통해 서버 구축하기 (EC2)

💡EC2란? 아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스 클라우드 컴퓨팅? 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등의 컴퓨팅 서비스를 제

peachcong.tistory.com

 

⬆️ 위 내용 진행 후 아래 내용 실행하기!

 


 

1. 인스턴스에 필수 dependency program 다운로드

ssh명령어를 이용해서 인스턴스에 연결되어 있는 상태에서 시작!

cd C:\Users\Peach\Desktop\PEACH
ssh -i peachcong29.pem ec20user@{instance-public-dns-name}

 

인스턴스에 정상적으로 연결되면 나오는

귀여운 비둘기.. 독수리.. 🕊️

 

 

1) Java 1.8 설치하기

yum list java*

 

위 명령어를 입력하면 java로 시작하는 모든 rpm 파일을 찾아준다

 

> 내가 원하는 rpm명 확인하고 설치!

 

나는 이미 설치했기 때문에 yum명령어로 확인 시

Installed Packages에 Java-1.8 이 있는 것을 확인할 수 있다

 

설치는 아래 코드와 같이 입력하면 된다!

sudo yum install {file_name}

 

ex ) sudo yum install java-1.8.0-amazon-corretto

** yum -y로 입력시 설치 확인 여부를 물어보지 않고, 바로 설치가 진행된다

 

java -version

 

정상적으로 설치가 잘 되었는지 확인하기 위해

java -version 입력해서 확인!

 

 

이렇게 version 내용이 나오면 정상적으로 설치 완료!

 

 

2) 톰캣 다운로드하기

yum list Tomcat*

 

Java 설치와 동일하게 list를 검색해보면

터미널에서 기본적으로 Tomcat version9로 설치할 수 있다

 

그러나 혹시라도 원하는 버전이 따로 있는 경우!

Apache Tomcat 사이트에 들어가서 다운받고 수동 설치해주면 된다

 

나도 프로젝트 할 때 사용했던 톰캣 버전이 8.5 라서

최대한 맞춰서 진행하려고 수동 설치로 진행해주었당

 


 

 

⬇️ 아래는 수동 설치 방법!

수동 설치가 필요 없다면 바로 2-1번으로 넘어가세용

 

https://tomcat.apache.org/download-80.cgi 

 

Apache Tomcat® - Apache Tomcat 8 Software Downloads

Welcome to the Apache Tomcat® 8.x software download page. This page provides download links for obtaining the latest versions of Tomcat 8.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versions

tomcat.apache.org

 

Tomcat 사이트에 들어가서 원하는 버전 확인 후

> 리눅스 압축파일 tar.gz 다운로드

> 파일질라(FileZila)를 사용해서 다운 받은 파일 이동

 

 

** 파일질라(FileZlia) 다운로드 및 사용방법은 아래 링크 참고!

https://peachcong.tistory.com/37

 

[프로젝트 배포 #1] FTP 프로그램 파일질라(FileZila) 다운로드 및 사용방법

💡 파일질라(FileZila) ? 파일질라(FileZila)는 FTP, SFTP, FTPS를 지원하는 FPT 관리 소프트웨어로 인터넷이나 네트워크를 통해 서버와 클라이언트 컴퓨터 간에 파일을 전송할 수 있도록 도와주는 애플리

peachcong.tistory.com

 


 

 

2-1) 터미널에서 `ll` 입력하여 파일 리스트 출력

 

파일질라로 이동시킨 Tomcat 압축 파일이 잘 보인다면 성공!

 

 

2-2) 아래 코드를 입력해서 압축 파일을 풀어줍니다

 tar -zxvf apache-tomcat-8.5.98.tar.gz

 

** tar -zxvf : 압축 푸는 명령어

 

 

2-3) 압축 폴더명 변경 (생략 가능)

톰캣의 폴더명이 길다고 생각되어 편의상 폴더명 변경하기!

이 부분은 정말 단순히 '편의상'이므로 생략 가능하다

mv {folder_name} {new_folder_name}

 

ex ) mv apache-tomcat-8.5.98 tomcat

✨ mv 명령어 ?
      mv 명령어는 {이동시킬 디렉토리/파일} {이동될 위치} 두 인자를 필수로 갖는다

     경로를 지정하지 않는다면 현 위치를 디폴트로 설정!
     이동시킬 때 새로운 이름을 지정할 수 있으며,
     현재 위치에 이름만 바꿔서 이동시키는 식으로 파일의 이름을 바꿀 수 있다

 

 

2-4) port 번호 수정 (tomcat / conf)

cd tomcat
cd conf
ll
vi server.xml
i

 

> 압축 풀었던 tomcat 폴더의 conf 로 이동

> vi명령어로 server.xml을 열어주고, i (insert)를 입력해서 --INSERT-- 모드가 되었는지 확인

 

 

터미널 아래에 이렇게 뜬다면 편집이 가능하다!

 

 

 

기본으로 포트 번호가 8080으로 되어있는데

> 내가 원하는 포트 번호로 수정하고,  esc + shift + :wq 입력

명령키 설명
:q vi에서 작업한 것이 없을 때 vi 종료합니다.
:q! vi에서 작업한 내용을 저장하지 않고 종료합니다
:wq vi에서 작업한 내용을 저장하고 종료합니다.

 

 

2-5)  startup 쉘 스크립트 실행  (tomcat / bin)

cd ..
cd bin
ll
sh startup.sh

 

 

** 종료하고 싶다면 sh shutdown.sh 입력

 

 

2-6) AWS 방화벽 설정

인스턴스 > 보안 > 보안그룹명 클릭 > 인바운드 규칙 - 인바운드 규칙 편집

 

> 유형 : 사용자 지정 TCP
> 포트 범위 : 내가 사용하려는 포트 번호 (server.xml에 작성한 포트번호와 동일하게)

> 소스 : 사용자 지정 0.0.0.0/0

 

나는 Tomcat의 포트번호를 추가하고, DB 서버로 사용하는 네이버클라우드의

Linux SSH 서비스 기본 포트 번호 22도 함께 추가해주었다!

 

 

2-7) 파일질라를 이용해서 war 파일 이동 (tomcat / webapps)

 

> 파일질라(FileZila)를 이용해서 빌드한 war파일을 이동

> war파일 저장 경로 : tomcat > webapps

 

⬇️ 프로젝트 war파일 빌드 방법

https://peachcong.tistory.com/42

 

[프로젝트 배포 #2] Spring에서 war 파일 빌드하기

프로젝트를 배포하기 위해서는 당연히 내가 만든 프로젝트를 빌드해야 한다 Spring 개발환경 구성보다 쉬운 프로젝트 war 파일 빌드 방법 스타또-!🐣 💡 전제 조건 Maven 다운로드가 되어 있어야

peachcong.tistory.com

 

 

2-8) 터미널에서 ContextPath명 변경해주기

 

mv {war_filename} {new_war_filename}

 

ex) mv porongport.war ROOT.war

 

ContextPath를 ROOT로 변경하지 않으면,

아래 표에 있는 예시 내용처럼 DNS 뒤에 기존 ContextPath가 계속 붙어서 출력된다

예시 설명
기존 ContextPath 사용시 http://www.peachcong.store/porongport
ROOT로 ContextPath 변경시 http://www.peachcong.store

 

 

2-9) 포트포워딩 설정 (80 포트 > 8080 포트)

💡 포트포워딩을 진행한 이유?
      브라우저의 기본 포트는 80포트로 포트 번호를 입력하지 않으면 자동으로 80포트를 잡는다
      ex) http://www.***co.kr = http://www.co.kr:80

      Tomcat의 경우 기본 포트가 8080으로 잡혀있기 때문에
      Tomcat 서버에 접근 시 항상 포트 번호를 입력해야 하는 번거로움이 생긴다
      ex) http://www.***.co.kr:8080

      이렇게 된다면 웹 사이트를 이용하는 사용자는 불편함이 있을 수밖에 없다😥
      1) Tomcat 포트를 80 포트로 직접 변경해주는 방법
      2) 80 포트를 8080 포트로 리다이렉트 시켜주는 방법
     
      불편함을 해결하기 위해 위와 같은 방법을 사용할 수 있는데,
      1번 방법의 경우 AWS에서 일반 유저의 80포 접근을 제한하기 때문에 권한 문제로 사용이 어렵다
      따라서 2번의 리다이렉트 방법으로 포트포워딩을 진행한 것!
ifconfig
sudo iptables -A PREROUTING -t nat -i {인터페이스} -p tcp --dport 80 -j REDIRECT --to-port {포트번호}

 

ex) > sudo iptables -A PREROUTING -t nat -i enX0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

> 터미널에서 ifconfig로 이더넷 이름을 확인

> 포트 포워딩 명령어 입력

 

 

ifconfig를 입력했을 때 네모박스 부분에 출력되는 이름이
해당 네트워크의 인터페이스명이다!

 

sudo iptables-save

 

> iptables 저장하면 포트포워딩 설정 완료!

 

 


 

Ref.

🔗 Linux mv 명령어란?

🔗 포트 포워딩 방법

🔗 port forwarding 8080 to 80