이번 글에서는 ubuntu에서 sudo 계정 패스워드 초기화 및 sudo 계정으로 전환하는 방법을 알아보려고 한다.

 

 

최초에는 sudo 계정의 패스워드가 지정되어 있지 않으므로 1번 초기화 한 이후에 사용이 가능하다.

아래와 같이 sudo passwd root 명령어를 이용해 비밀번호를 초기화한다.

 

ubuntu@ip-(my-ip):~$ sudo passwd root
New password:  # sudo 계정에서 사용할 패스워드 입력
Retype new password:  # 한번 더 입력
passwd: password updated successfully  # 패스워드 초기화 완료

 

 

이후 su, su root 명령어를 입력 후 패스워드를 한번 입력하면 사용자 계정 -> root 계정으로 변경이 가능하며

exit 명령어를 통해서는 root 계정 -> 사용자 계정으로 변경이 가능한 것을 확인할 수 있다.

 

su/su root 명령어 및 exit 명령어 사용 예시

 

 

끝.

 

반응형

신규 인스턴스는 생성했으니, 지금 개발중인 크롤링 서버를 띄우기 위해 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!

 

 

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

 

 

 

 

끝.

반응형

생성한 EC2에 WAS를 띄운다거나 하는 등의 각종 작업을 하기 위해서는 내 클라이언트 PC에서 서버인 EC2 인스턴스로의 접속이 필요하다. 

EC2를 생성하는 방법은 아래 포스팅을 참고하면 된다.

 

[혼자 다 해볼거야/Cloud & Architecture] - [AWS] Free Tier EC2 생성

 

 

 

OpenSSH 등을 비롯한 여러가지 방법이 있겠지만, 업무 시 가장 많이 사용해서 제일 익숙해져버린 PuTTY를 이용해서 SSH 접속을 하기로 한다.

 

 

 

PuTTY 설치 및 설정

PuTTY 설치 단계는 다른 곳에서도 충분히 친절하게 설명해주고 있으니 생략하기로 한다.

이왕이면 쌔삥으로 - 최신 버전으로 - 설치해 주는 것이 좋겠다.

 

설치가 완료되었으면, 아래 공식 가이드를 참고하여 PuTTY 설정을 진행하자.

해당 포스팅에서는 주요 단계만 언급하도록 한다.

 

AWS PuTTY 연결 공식 가이드

 

 

나는 최초에 pem이 아닌 ppk로 키 페어를 받아 두었으므로 PuTTYgen을 이용한 변환 단계는 생략하였다.

이하는 상기 공식 가이드에서 발췌한 내용이다.

 

 

 



 

 

공식 가이드에서는 5-1 단계와 같이 호스트를 신뢰하겠다는 설정 이전에 RSA 키 지문 확인 등을 통해 다른 공격이 있는지 확인하라고 하나, 현재는 서비스 단계도 아니고 생성과 학습 단계이므로 생략하기로 한다. (아마존도 선택 사항이라고 적어놓기도 했고)

 

5-2 부분에서의 선택창은 아래 창을 의미한다. 'Accept'를 누르면 신뢰할 수 있는 호스트로 알고 PuTTY의 캐시에 키를 저장하여 계속 접속할 수 있게 해 준다.

 

공용 PC가 아닌 개인 PC라면 'Accept'를 선택하여 편하게 접속하자

 

 

 

아래와 같이 정상적인 커맨드 창이 표시되면 EC2 인스턴스에 성공적으로 접속된 것이다.

 

검은 커맨드 창이 보이면 마음이 편-안해지는 어른이 되었다

 

 

 

끝.

반응형

전체적인 아키텍쳐를 그리기 전에, 12개월 & 월 750 시간으로 기간이 정해져 있는 EC2 Free Tier가 아깝기도 하고, 뭔가 하나라도 실제 웹 상에서 퍼블리싱이 되어 구동되는 모습이 보여야 더욱 흥미가 붙을 것 같아 EC2부터 한 대 생성하기로 한다.

 

AWS 계정을 이용하여 클라우드 콘솔에 접속한다.

(AWS 계정 생성 방법은 이전에 업로드한 글을 참고하시면 됩니다.)

 

[혼자 다 해볼거야/Cloud & Architecture] - AWS Free Tier 계정 생성

 

 

Free Tier 기준

AWS는 GCP와는 다르게 컴퓨팅 서비스에 평생 Free Tier 개념이 없다. 대신에 계정을 생성한 후 12개월동안 750시간/월의 무료 혜택을 제공한다.

 

 

한 달 750시간이란, 1개의 EC2를 생성한 경우에는 일일 24시간 구동을 기준으로 약 31일을 사용할 수 있는 양이므로, 하나만 공짜로 사용하라는 말이다.

두 개 이상의 EC2를 생성할 경우, 하루 종일 두 인스턴스를 구동시킨다면 무료 혜택을 초과하게 되어 비용이 부과되므로 참고하자.

 

다른 서비스들의 Free Tier 기준은 아래 AWS 사이트의 링크를 참고하면 된다.

 

AWS Free Tier 살펴보기

 

 

위 링크에서 여러 서비스들의 프리 티어 기준을 확인할 수 있다.

 

 

생성

AWS Console에서 EC2 메뉴 진입 > 인스턴스 시작 버튼 클릭

 

 

이후 표시되는 메뉴에서 생성될 서버의 OS 등 여러가지 사양을 선택해야 한다. 

OS는 Amazon Linux, 레드햇 계열의 Red Hat Linux, (CentOS는 2021년 서비스 지원 종료로 없어진 듯 하다), 데비안 계열의 Ubuntu등이 제공된다.

Windows Server도 프리 티어 OS로 제공되나 프리 티어 인스턴스 사양으로는 돌리기가 버거울 것 같아 무시한다.

 

 

구글링을 하며 한참을 고민하다 우선은 Ubuntu로 생성하기로 결정했다.

 

반드시 '프리 티어 사용 가능' 문구가 있는 OS로 선택하여야 공짜로 받아먹을 수 있다.

 

 

 

인스턴스 유형은 t2.micro로 선택하였고, 키 페어는 기존에 생성해 둔 것이 없으므로 신규로 생성하였다.

나는 PuTTY를 사용하여 SSH 접속할 예정이므로 ppk 파일 형식으로 생성하였다.

 

신규 키 페어를 생성해야 인스턴스에 안전하게 연결이 가능하다.

 

생성을 클릭하면 ppk 확장자로 된 파일이 자동으로 다운로드되는데, 나중에 PuTTY 접속 설정 시 사용되기도 하고 보안 상 중요한 Key가 되므로 안전한 곳에 꼭꼭 숨겨 보관하도록 하자.

 

 

 

 

다음으로 항상 중요하고도 복잡한 네트워크 설정 단계인데, 다른 것들은 기본값으로 그대로 두었으며 보안 그룹 이름은 내 마음에 드는 이름으로 변경해 주었다.

 

 

인바운드 보안 그룹 규칙은 SSH Port(기본 22)를 활용해 해당 인스턴스에 접속하기 위한 제일 기본적인 Rule을 등록하게 되는데, 그 중 가장 중요한 소스 유형은 '위치 무관'의 경우 어떤 IP로 접속하더라도 접속 가능하도록 허용하는 것이고 '사용자 지정' 또는 '내 IP'로 선택할 경우 특정 IP를 직접 입력하거나 지금 접속하고 있는 IP로 한정하여 EC2에 접속 가능하도록 제한하는 것이다.

 

일반적인 가정용 인터넷 공유기 설정은 유동 IP를 할당받아 사용하도록 되어 있기도 하고, 글을 작성하는 시점에 카페에서 공용 와이파이를 사용하고 있다 보니 '위치 무관'으로 우선 생성하기로 한다.

 

인바운드 보안 그룹 규칙은 신경써서 생성해야 한다.

 

 

 

마지막으로 스토리지 부분인데, 프리 티어의 경우 SSD 타입의 스토리지까지 포함하여 총 30Gb가 무료 용량으로 제공된다. 이번 인스턴스에는 8Gb만 할당하여 쓰기로 한다.

 

gp2가 기본적으로 선택되어 있으나 gp3가 (서비스의 I/O 패턴에 따라 다르기는 하나) 일반적으로 더 낫다고 알고 있어 gp3로 변경하여 생성하기로 한다.

 

gp2와 gp3 비교. 볼륨당 최대 처리량이 더 빠르고 나머지가 동일하면 gp2의 존재 이유는...? 공부,,,해야지,,

 

 

기타 설정은 건드리지 않고 생성을 누르게 되면, 아래와 같이 약간의 시간이 지난 뒤 인스턴스 생성이 완료되었다는 메시지를 볼 수 있다.

 

 

 

 

이후 모든 인스턴스 보기 버튼을 눌러 대시보드로 이동하면, 내가 생성한 인스턴스가 한 줄 표시되고 '인스턴스 상태'가 '실행 중'으로 표시되는 것을 볼 수 있다.

 

 

끝.

반응형

기존에 생성했던 AWS 계정은 생성한지 1년이 초과되어 Free Tier 혜택을 받지 못한다.

그렇다고 해당 계정을 삭제하자니 내가 사용하는 Gmail 주소라 삭제할 수도 없어, 프로젝트용 신규 AWS 계정을 생성하기로 했다.

 

Google 계정 신규 생성

별다른 설명이 필요 없을 것 같다.

참고로 AWS Free Tier의 기간 한도는 1년이므로, 1년 주기로 계정을 재 생성하여 Free Tier 혜택을 반복적으로 누리기 위한 사용자라면 기존 이메일 계정을 사용하지 말고 신규 Google 계정을 추가로 만들 것을 추천한다.

 

AWS 계정 신규 생성

Google 계정을 새로 생성했다면, AWS 사이트(https://aws.amazon.com/)로 들어가자. 우측 상단을 보면 AWS 계정 생성 버튼이 보인다.

 

페이지 우측 상단에 'AWS 계정 생성' 버튼이 있다

 

 

클릭하여 절차를 차례대로 따르면서 가입을 진행한다.

두번째 단계쯤 보면 국가 또는 리전을 선택하는 단계가 나타나는데, Google의 GCP 경우에는 프리 티어 혜택을 받기 위해서는 특정 리전에 인스턴스를 생성해야 하는 등의 제약이 있었던 것으로 기억하지만 AWS는 제약이 없다고 한다.

 

빠른 속도를 위해 대한민국 리전으로 선택하여 가입하도록 하자.

 

국가 또는 리전 선택

 

 

신용카드 정보 등을 입력하고 마지막 단계쯤에 다다르면 Support 플랜을 선택하는 부분이 나타나는데, '기본 지원 - 무료' 항목을 선택하면 된다.

 

무엇을 선택하건 AWS 기능을 사용하는 데는 차이가 없고, 무슨 일이 생겼을 때 AWS에 지원 요청을 하게 되는데 이 때 느린 서비스를 받느냐, 돈을 더 주고 빠른 서비스를 받느냐의 차이가 있는 것이므로 일반 개인 개발자들은 무료 항목을 선택하고 가입을 진행하면 된다.

 

Support 플랜 선택

 

 

플랜을 선택하고 나면 가입이 완료된다.

계정을 활성화하는 데 몇 분이 걸린다고 나와 있으니 조금 기다려 보자.

 

제프 베조스, 아니 앤디 제시로부터의 축하 메시지

 

 

잠시 후 로그인했을 때, 아래와 같이 AWS Console이 정상적으로 표시되면 가입이 완료된 것이다.

 

AWS Console Main Page

 

 

끝.

반응형

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

 

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

 

 

 

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

개발을 놓은 지 좀 되었지만, 그럼에도 누가 내 주 언어를 묻는다면 나는 여전히 커리어를 처음 시작했을 때 접했던 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