Mac) Oracle Cloud FreeTier 이용해 웹 어플리케이션 배포하기 2) 톰캣 설치하기 및 배포 + 외부 접속 허용

작성: 2021.07.17

수정: 2021.07.17

읽는시간: 00 분

Development/Cloud

반응형
관련 글 목록
Mac) Oracle FreeTier 이용해 웹 어플리케이션 배포하기 1)인스턴스 만들고 접속하기.
Mac) Oracle FreeTier 이용해 웹 어플리케이션 배포하기 2) 톰캣 설치하기 및 배포 + 외부 접속 허용
Mac) Oracle FreeTier 이용해 웹 어플리케이션 배포하기 3) 타임존 문제 해결
Mac) Oracle FreeTier 이용해 웹 어플리케이션 배포하기 4) 무료 데이터 베이스 만들기 및 데이터 이관하기
Mac) Oracle Cloud FreeTier 이용해 웹 어플리케이션 배포하기 5) 톰캣 도메인 연결해 배포하기
Mac) Oracle Cloud FreeTier 이용해 웹 어플리케이션 배포하기 6) 오라클 전자지갑 사용해 프로젝트와 연결하기

일단 ubuntu에 접속을 합니다. 이미 해보셨듯이 ssh ubuntu@ip 로 접속 하시면 됩니다.

Tomcat 9

JDK 설치

설치에 앞서 apt 업데이트를 해 줍니다.

sudo apt update

img

이제 JDK를 설치 해 줍니다.

sudo apt install default-jdk

img

304MB 를 다운 받는다고 합니다. Y 혹은 엔터키를 쳐서 설치 합니다.

Tomcat 설치

tomcat 8 설치

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

톰캣 홈페이지에 방문해서 다운받을 버전을 선택 합니다. 저는 8.5 버전을 설치할 예정입니다.

img

그래서 설치할 버전의 tar.gz의 link를 copy 합니다.

https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.73/bin/apache-tomcat-8.5.73.tar.gz

위와 같은 주소가 복사 되는데요, wget 명령어를 이용해 다운 받습니다. opt 폴더에 다운 받아 보도록 하겠습니다.

폴더가 없다면 미리 mkdir /opt를 해 주세요.

sudo wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.73/bin/apache-tomcat-8.5.73.tar.gz -P /opt/

image-20211126215544291

금방 다운이 완료 됩니다.

다운이 완료 되면 /opt 디렉터리에 Tomcat 아카이브를 추출 합니다.

sudo tar xf /opt/apache-tomcat-8.5.73.tar.gz -C /opt/

image-20211126215703288

아카이브를 추출 했습니다.

image-20211126215741619

제대로 압축이 풀린것을 확인 할 수 있습니다.

tomcat 9 설치

tomcat 9를 사용하는 분은 조금 더 쉽게 설치할 수 있습니다.

sudo apt install tomcat9

img

위의 명령어를 입력 하고, 14.9MB의 용량이 사용된다는 안내에 y를 입력해 동의 하면

img

금방 톰캣 설치가 완료 됩니다.

이제 아래의 명령어를 입력 하면,

sudo systemctl status tomcat9

img

톰캣 서버가 잘 실행 되어 있는 것도 확인 할 수 있습니다.

curl로 접속을 해 봅니다.

curl localhost:8080

img

서버가 잘 켜있는 걸 확인 했습니다. 외부에서 접속을 해 봐야 겠습니다.

외부 접속 허용

img

VM 의 ip를 확인 해서,

http://132.226.232.81:8080

에 접속을 하려고 하는데, 응답이 계속 펜딩 상태 입니다.

img

방화화벽 설정을 위해 ufw 를 설치합니다

sudo apt install ufw

img

금방 설치 됩니다.

아래 명령어를 입력해 8080 포트의 방화벽을 해제 합니다.

sudo ufw allow 8080/tcp

img

Rules updated가 됩니다. 80 port도 열겠습니다.

sudo ufw allow 80/tcp

그래도 접속이 안되길래 ping을 쏴보니 애초에 연결이 안됩니다. 서버 보안 설정을 확인 해 보겠습니다.

Primary VNIC 의 subnet 설정에 들어갑니다.

img

subnet : public Subnet .. 을 클릭 하면

img

보안설정이 한개 보입니다. Default Security list를 클릭 합니다.

img

Add ingress Rules를 눌러 수신 규칙을 추가 해 줍니다. 사실 80과 443은 이미 추가가 해두었네요.

img

모든 규칙에 대해 오픈 하겠습니다. Add Ingress Rules를 눌러 저장합니다.

이후 ping을 쏴보면

img

이제 응답이 잘 넘어옵니다! 응답 속도도 굉장히 괜찮네요.

netstat 명령어를 이용해서 포트를 확인 하려는데 에러가 발생합니다.

netstat: command not found

이때는 net-tools 패키지를 설치 해야 합니다.

sudo apt install net-tools

img

금방 완료가 됩니다.

netstat -atn

을 입력해서 port listen을 하고 있는지 확인을 해 봅니다.

img

8080 port를 잘 LISTEN 중 입니다.

iptables를 확인 해 봅니다. 규칙에 80 포트를 여는 내용이 없습니다. 하나 하나 설정 할 수 있는 분들은 설정을 변경하면 되구요

img

아래 명령어로는 iptables 규칙을 초기화 할 수 있습니다.

sudo iptables -F

저는 iptables의 규칙을 초기화 해서 해결 하겠습니다.

보통 여기에서 모두 해결 됩니다.

이제 server.xml 파일을 편집 합니다. 저는 vim 에디터가 아직 없어서 vim 에디터도 설치를 먼저 합니다.

sudo apt-get install vim

img

server.xml 을 편집 해 보겠습니다.. tomcat 을 sudo 권한으로만 접근하려니 너무 귀찮네요.

sudo vi server.xml

img

img

vim 에디터로 server.xml을 편집합니다. 저는 포트만 간단하게 80 으로 변경합니다.

img

wq를 입력해서 저장 합니다.

sudo systemctl stop tomcat9

이제 톰캣 서버를 종료 한 뒤에.

다시 톰캣을 실행시켰습니다.

sudo systemctl start tomcat9

이제 외부 ip로 접속을 해 보겠습니다.

img

이제 잘 작동합니다... 아 정말 간단하게 작성 했지만 방화벽 때문에 멀고 먼 길 힘들었습니다.

Tomcat9 -> 8로 변경

Tomcat 8 버전으로 배포 하기 위해 테스트를 위해 설치& 실행했던 tomcat9 를 종료하고

sudo systemctl stop tomcat9

혹시 삭제하고 싶다면 삭제도 합니다

$ sudo apt remove tomcat9

Tomcat8 실행

tomcat 8.5 버전을 실행하기 위해 bin 폴더로 들어가려는데 권한이 없습니다.

-bash: cd: bin: Permission denied에러가 발생합니다.

image-20211126220242125

sudo cd bin 명령으로 bin 폴더에 들어 갈 수도 있지만

sudo -i 명령어로 쉽게 root 권한을 얻을 수 있습니다.

img

sudo -i 이후 계정이 root로 변경 되었습니다.

img

이제 탐색이 자유롭습니다.

그대로 톰캣을 실행 합니다.

./startup.sh

img

Tomcat started. 라고 나옵니다.

이제 접속할 때 사용한 아이피 주소에, 기본 톰캣 포트인 8080을 브라우저에 입력 해서 접속을 확인 해 봅니다.

img

귀여운 고양이가 반겨 줍니다! 일단 위에서 했던 대로 서버를 종료 하고 port 를 80으로 변경합니다.

/shutdown.sh

서버 종료 명령어 입니다.

img

img

vi server.xml 에서 아까처럼 port를 변경 해 줍니다.

Connector port="8080" 이라고 작성 된 부분이 두개가 있는데, Catalina 블럭 안에 있는걸 변경 해 주어야 합니다.

img

이후 서버를 다시 켜면

img

기본 웹 포트인 80 번으로 설정 되어서, 포트 번호를 입력 하지 않아도 연결되는 모습

tomcat 8.5 버전에서 80port 로의 배포 준비가 완료 되었습니다.

SSH로 파일 전송 후 war 파일 배포

scp

이제 war파일을 한번 배포 해 보겠습니다.

ssh로 간단하게 파일을 전송 할 수 있습니다.scp 명령어를 사용 하면 되며 기본적인 사용법은 아래와 같습니다.

1) 원격 서버에서 로컬로 파일 받아오기 명령

scp [옵션] [계정명@ip주소]:[원본 경로 혹은 파일] [저장할 경로]

2) 로컬에서 원격 서버로 파일 전송 명령

 scp [옵션] [원본 경로 혹은 파일] [계정명@ip주소]:[전송할 경로]

옵션으로는 -P ( 기본포트 22가 아닐 경우 포트 번호 지정),

-p (원본 파일 수정/삭제 권한 유지),

-r ( 하위 폴더 및 파일 모두 복사) 가 있습니다.

제 mac의 바탕화면에 있는 /Users/shane/Desktop/gaia.war 파일을 원격서버의 /opt/apache-tomcat-8.5.73/webapps

로 전송하겠습니다.

scp /Users/shane/Desktop/gaia.war ubuntu@146.56.191.188:/opt/apache-tomcat-8.5.73/webapps/ROOT.war

image-20211126220808352

뭐하나 쉽게 되는게 없군요.. 이번엔 Permission denied (publickey). 에러가 뜹니다.

해당 폴더에 접근 할 수 있는 권한이 없기 때문입니다.

권한설정

root 권한으로 /opt 폴더의 권한을 777로 변경하겠습니다.

sudo chmod 777 /opt

이후 ls-l로 확인을 해 보면, opt 폴더의 권한이 drwxrwxrwx 로 변해 있는 것을 확인 하실 수 있습니다.

하위 폴더까지 권한 설정

하지만 하위 폴더까지 권한이 있어야 전송을 할 수 있기 때문에 recursive로 하위 폴더까지 모두 권한을 변경 해 주어야 합니다.

하위에 있는 모든 폴더와 파일까지 한번에 권한 변경을 하려면 -R 옵션을 주면 됩니다.

아래와 같이 입력해 이번에는 opt 폴더 하위의 권한을 모두 풀어줍니다.

sudo chmod -R 777 /opt

img

이제 로컬에서 scp 명령어를 다시 입력하면

scp /Users/shane/Desktop/gaia.war ubuntu@146.56.191.188:/opt/apache-tomcat-8.5.73/webapps/ROOT.war

image-20211126221211606

전송이 시작됩니다!

image-20211126221235521

의도한 폴더에 ROOT.war 파일을 집어 넣었습니다.

서버가 켜 있다면 톰캣을 새로 실행 하지 않아도 자동으로 재시작 됩니다.

이제 해당 ip에 잘 배포가 되었는지 주소를 입력해서 접속 해 보겠습니다.

img

길고긴 여정의 끝 입니다...

로그 확인

마지막으로 실행 중인 tomcat의 로그를 실시간으로 확인 하고 싶다면, logs 폴더에서

tail -f catalina.out

명령어를 입력하면 실시간으로 톰캣 에러를 점검 하실 수 있습니다.

img

이상입니다. 정말 수고하셨습니다! 위에 보이는 DB 문제는 길이 글어져 바로 다음글에서 해결합니다.

https://shanepark.tistory.com/172

반응형