신규 인스턴스는 생성했으니, 지금 개발중인 크롤링 서버를 띄우기 위해 Tomcat 설치 및 관련 셋팅을 진행한다.

EC2 생성 및 SSH를 통한 접속 방법은 아래에 있는 이전 포스팅을 참고하면 된다.

 

[혼자 다 해볼거야/Cloud & Architecture] - [AWS] Free Tier EC2 생성
[혼자 다 해볼거야/Cloud & Architecture] - [AWS] SSH로 EC2 접속하기 (w/PuTTY)

 

 

 

JDK 설치

Tomcat은 Java EE 플랫폼을 기반으로 만들어져 Java를 필수적으로 요구한다.

JDK 또는 JRE를 설치하면 정상적으로 Tomcat 구동이 가능하며, Java 관련 개발을 할 진 모르겠으나 확장성을 위해 JDK를 설치하였다.

 

 

JDK를 설치하기 전, 필요한 버전부터 우선 확인한다.

아래 표를 보면 Apache Tomcat Version별 Supported Java Versions가 표시되어 있으니 본인에게 필요한 Tomcat 버전과 Java 버전을 확인하고 설치를 진행하면 된다.

 

현재 공식 홈페이지를 보면 Tomcat 11 버전까지 출시가 되었으나 Alpha 버전이므로, 정식 출시 버전 중 가장 최신인 10 버전으로 설치하기로 한다. JDK는 11 이상 버전을 선택하여 설치하면 되겠다.

 

Tomcat 버전 별 최소 요구 Java Version

 

 

내가 생성한 인스턴스의 OS는 Ubuntu이므로, apt를 이용해 설치를 진행한다.

레드햇 계열의 OS(CentOS 등)는 yum을 사용해 설치를 진행하면 되고, 일부 명령어 차이는 있으나 진행 방식은 거의 유사하므로 CentOS 등을 사용하시는 분은 아래 명령어 비교표를 참고하며 진행하면 되겠다.

 

Ubuntu apt(apt-get) 와 Redhat/CentOS yum 명령어 비교표

 

 

sudo apt update  # apt로 설치 가능한 패키지 리스트를 업데이트
sudo apt upgrade  # apt로 설치한 패키지들을 업그레이드

 

 

설치한 적 없으나 혹시 몰라 Java 버전을 확인해 보니, 당연히 설치된 버전이 없다고 표시가 되지만 거기에 그치지 않고 자동으로 설치 가능한 버전과 설치 명령어를 제시해 준다. 아주 똑똑하다.

 

Java 버전 확인 결과 설치되어 있지 않으면, 자동으로 설치 가능한 버전과 명령어를 제시한다. 똑똑하다

 

 

나는 Tomcat 10 버전을 사용하기로 했으므로, 11 버전의 jdk를 설치하였다.

 

sudo apt install openjdk-11-jre-headless

 

 

설치 후 버전 확인을 다시 한번 진행하면, 아래와 같이 openjdk 버전이 정상 표시되는 것을 볼 수 있다.

 

ubuntu@ip-(my-ip):~$ java --version
openjdk 11.0.17 2022-10-18  # 정상 설치된 jdk 버전
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)

 

 

 

 

 

Tomcat 설치

다음으로는 Tomcat 설치를 진행한다.

 

우선 home 디렉토리 아래에 tomcat 폴더를 생성한다.

 

sudo mkdir /home/tomcat

 

다음으로는 tomcat 폴더 안에 tomcat 설치 파일을 다운받는다.

 

다운로드를 위해서는 설치 경로를 알아야 하는데, 설치 경로는 공식 다운로드 페이지 내에서 Download > Tomcat XX(다운받을 버전) 메뉴로 진입한 뒤 아래와 같이 tar.gz 파일의 URL을 복사하여 사용한다.

 

tar.gz 파일의 다운로드 URL 복사

 

cd /home/tomcat  # 디렉토리 이동
sudo wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz(복사한 URL)  # tomcat 10버전 다운로드

 

 

이후 다운받은 파일을 tar 명령어를 이용하여 압축 해제한다. 

사용되는 옵션의 상세 내용은 아래를 참고한다.

 

-v : 묶거나 파일을 풀 때 과정을 출력
-f : 파일 이름을 지정
-x : tar 압축 풀기
-z : gzip으로 압축하거나 해제

 

sudo tar xvfx apache-tomcat-10.0.27.tar.gz  # 다운받은 파일 압축 해제
# 압축 해제된 이후 폴더 정상 생성 확인
sudo rm apache-tomcat-10.0.27.tar.gz  # 원본 압축파일 삭제

 

 

압축을 해제하는 것만으로 Tomcat 설치는 완료된다.

이후 tomcat 정상 구동을 확인하기 위해 bin 폴더에 있는 startup.sh을 실행하였다.

 

sudo chmod -R 777 /home/tomcat/apache-tomcat-10.0.27/bin  #tomcat bin 폴더의 권한을 전체 권한으로 변경
cd bin  # /home/tomcat/apache-tomcat-10.0.27 폴더 내에서 bin 폴더로 한 단계 더 진입
./startup.sh  # startup.sh 실행

 

 

그랬더니 아래와 같이 catalina.out 파일에 권한이 없어 로깅을 못 한다는 오류가 표시되며 구동이 되지 않는다.

 

구동이 되지 않는다. 권한..... 휴

 

 

나는 정상 설치가 되었는지, 현재 별다른 환경 변수 설정 없이 tomcat이 구동 가능한 상태인지를 확인하고자 하는 것이기 때문에, sudo로 계정을 변경하여 진행하기로 했다.

 

[혼자 다 해볼거야/Cloud & Architecture] - [Ubuntu] sudo 계정 패스워드 초기화 및 sudo 계정으로 전환

 

 

무적의 sudo 계정을 가지고 다시 돌아왔다. 명령어를 재 실행해 보면...

Tomcat started.

 

Tomcat started

 

 

 

Security Group - Port 설정

정상적으로 기동된 tomcat의 웰컴 페이지를 보기 위해, 기본 포트를 확인한다.

Tomcat 설치 경로 아래 conf\server.xml 파일을 확인해 보면, 아래와 같이 Connector port의 설정값이 8080임을 볼 수 있다.

 

기본 Port는 8080이다

 

 

그러면 내 인스턴스의 Public IP를 넣고, 포트를 8080으로 붙여서 접속해 보면...

아래와 같이 접속 불가 페이지를 볼 수 있다.

너무 오래 걸려요

 

 

 

이유는 현재 내 인스턴스는 SSH로 접속하기 위한 SSH 기본 포트인 22 포트만 오픈되어 있기 때문이다.

AWS 콘솔에서 'EC2 > 인스턴스 > 인스턴스' 메뉴로 들어가서 내 인스턴스를 클릭한 뒤 아래 뜨는 창에서 '보안' 탭으로 들어가 보면, 아래와 같이 인바운드에 22번 Port만 오픈되어 있는 것을 볼 수 있다.

 

인스턴스 인바운드 규칙 확인

 

 

위 화면에서 '보안 그룹' 부분의 파란색 보안 그룹 ID를 클릭하면 해당 보안 그룹을 편집할 수 있는 새 창이 표시된다. 

해당 화면에서 하단의 '인바운드 규칙' 탭으로 진입한 뒤 '인바운드 규칙 편집' 버튼을 클릭한다.

 

인바운드 규칙 편집 클릭

 

 

표시되는 페이지에서 '규칙 추가' 버튼을 클릭한다.

유형은 '사용자 지정 TCP' 유형으로, 포트 범위는 Tomcat의 기본 커넥터 포트였던 8080으로, 소스는 우선은 전체 접속이 가능하도록 '0.0.0.0/0' 으로 입력한다.

이러한 인바운드 규칙을 추가하면 해당 인스턴스는 어떤 IP에서 접속하더라도 22번 포트로의 진입 뿐 아니라 8080 포트로의 진입도 허용하게 된다.

 

8080 Port Inbound 허옹

 

 

 

이후 다시 Public IP:8080 형태로 진입을 시도하면 아래와 같이 Tomcat 기본 페이지를 정상적으로 확인할 수 있다.

 

If you're seeing this, you've successfully installed Tomcat. Congratulations!

 

 

환경변수 설정 등 기본적으로 확인해야 할 내용들이 더 있으나, 해당 글에서는 전반적인 설치 후 정상적인 기동 확인까지만 진행한 후 다른 포스팅에서 이어 진행해보려고 한다.

 

 

 

 

끝.

반응형

티스토리에 처음 쓰는 글이 되겠다.

 

프로젝트의 기본적인 아이디어는 네이버 블로그에 대강 휘갈겨 써 두었고, 회사 성과급도 어느정도 윤곽이 드러난 듯 하니 이제 정말 내 자만심대로 '내가 한번 해볼거야' 라며 박차고 나갈거라면, 진짜 슬슬 본격적으로 시작해야 되겠다는 생각이 든다.

 

 

 

가장 막연한 부분은 웹과 관련된 기술 스택이다.

개발을 놓은 지 좀 되었지만, 그럼에도 누가 내 주 언어를 묻는다면 나는 여전히 커리어를 처음 시작했을 때 접했던 C#을 댈 것이다. 그만큼 웹과 동떨어져 있다는 이야기가 되겠다.

 

그런 만큼 리서치를 통해 개발 언어와 프레임워크 등을 신중하게 택하려고 고민하는 중이다.

주된 포인트는 아래 정도가 될 것이다.

 

 

 

 


  • 범용성 - 평생 백수로 살 수는 없기에, 이 프로젝트가 포트폴리오로 사용될 것을 감안하여 시장에서 선호하는 범용성 높은 기술들로 선정해야 함
  • 개발 용이성 - 내 곳간의 밑천이 다 드러나기 전에 이 프로젝트로 뭔가 이뤄내야 함. 따라서 쉽고 빠른 기술을 선택해야 하므로 개발 용이성 또한 간과할 수 없음

 

 

범용성의 경우는 아래 B.Iog님의 글을 참고하였고, 클라우드 서비스를 제외하고 나머지 항목들은 두 기업 기술 스택의 교집합을 잘 살펴보고 아래 표와 같이 대강 정리해 보았다.

 

네이버/카카오가 사용하는 기술 스택 (by B.Iog)

 

 

Cloud Service AWS
GCP
Language Java
Javascript
Python
Front-end Framework React
Vue
Back-end Framework Spring
SpringBoot
Node.js
Database MySQL
Redis
ElasticSearch

 


 

 

Cloud Service

AWS는 지난 팀에 있었을 당시 사업팀 인프라 담당자로 있으면서 어깨 너머로 배운 경험이, GCP의 경우 프리 티어를 활용해 기본적인 학습을 했던 경험들이 남아 있어 조금은 수월하게 접근할 수 있을 것 같다.

 

지금 가능한 수준에서 차근차근 시작해보는 중이다.

 

[혼자 다 해볼거야/Cloud & Architecture] - [AWS] Free Tier EC2 생성
[혼자 다 해볼거야/Cloud & Architecture] - [AWS] SSH로 EC2 접속하기 (w/PuTTY)

 

 

 

Language

웹의 근간이 되는 JavaScript, 신입 교육 이후에는 (거의) 본 적도 들은 적도 없어져서 대부분 머릿속에서 날아가 버렸다.

너무 기본적인 내용일 수 있지만, 프레임웤이 아닌 바닐라 JS부터 다시 좀 배워야겠다는 생각이 들었다.

노마드 코더 사이트의 무료 바닐라 JS 강의를 통해 기본적인 내용을 학습하고 있다.

 

바닐라 JS로 크롬 앱 만들기 - 노마드 코더

 

 

 

 

 

이 외에도 정해야 할 것들, 개발해야 할 것들이 산더미이기에 빨리 공부하고 빨리 결정해서 움직여야겠다.

 

끝.

반응형

+ Recent posts