[2023.01.11] 개발자 교육 77일 차 : 강의-AWS 학습(Mac) [구디 아카데미]

DaramGee·2024년 1월 11일
0
post-thumbnail

복습

AWS(Amazon Web Service)

  • 네트워킹 기반 가상 컴퓨터, 스토리지, 네트워크 인프라 등 다양한 서비스를 제공하고 있어 필요한 서비스로 조합하여 사용 가능하다.

  • 장점 ? 저렴한 비용, 속도 및 민첩성, 데이터센터 운영 및 유지 비용 감소

  • 주요 개념

  • Subnet


강의 내용

리눅스 기본명령어

리눅스 트리 명령어
-d : 디렉토리만 표시 (tree -L 2 -d) ->2depth와 디렉토리만 표시
-fi : 디렉토리 경로 표시 (tree -L 2 -d -fi) ->2depth 디렉토리 경로 표시
-l : 확인필요
-L : depth 레벨 설정 하여 표시 (tree -L 2)
-p : 파일 권한 표시 (tree -L 2 -p) ->2depth 파일권한 표시
->주로, tree -d -f -p 또는 tree -d -f
[history]
!번호 : 해당 번호의 명령 재입력 가능함

  • tree 명령어 사용 예시

  1. 디렉토리 및 파일 관련

    pwd : 현재 위치하고 있는 경로 출력

    mkdir : 디렉토리 생성(mkdir 디렉토리명)

    rm : 파일 삭제 명령

   cd  : 이동
- ~ : 사용자 홈디렉토리
- . : 현 디렉토리
- .. : 상위 디렉토리
- 절대경로(/부터 모든 경로) : cd/etc : /etc 디렉토리 이동
- 상대경로(현위치 기준 경로) : 현재 /etc/ssh일 때, /로 이동하려면 -> cd ../..

   ls : 목록확인
- (ll)ls -l : 파일과 디렉토리에 대한 내용을 구체적으로 출력함
(권한 소유계정 그룹계정 파일크기[Byte] 생성날짜 파일이름)

  • ls -a : 현재 디렉토리에서 숨김파일을 포함하여 출력함
  • ls -lils-l상태에서 inode번호를 함께 출력함
  • llls-l과 동일함
    - lh : 자세히 출력
    - R : 하위 폴더 파일 출력

   cp : 파일 및 디렉토리 복사
- 원본파일[원본디렉토리] 대상디렉토리/바꿀파일명
- -r 사용해야 디렉토리까지 복사
- -f 강제로 무조건 복사

   mv : 파일 및 디렉토리 이동
- 파일 이동 : 원본파일[원본디렉토리] 대상디렉토리/바꿀파일[디렉토리]명
- 이름만 변경 : 원본파일[원본디렉토리] 바꿀파일[디렉토리]명

   cat : 짧은 텍스트 파일 보기
- cat 파일명 : 파일 내용 표시
- cat 파일명 : 파일에 입력하는 내용저장 & 작성종료 ctrl + d

   less : 긴 텍스트 파일 보기, 수정
- v : vi or nano편집기로 이동

   find : 파일찾기
- find 찾을디렉토리 옵션(find /home/sunny -name sc)
- 전체 검색해서 파일명 검색하기(find /home | grep sshd_config)

   grep : 텍스트 문서, 명령 결과물에서 원하는 패턴 포함된 라인만 출력?

   echo : 변수값 찾고 싶을 때 사용
- $앞에 : 텍스트가 갖고 있는 값 출력
- S앞에 :

   head : 텍스트 파일 첫 10줄만 출력

   tail : 텍스트 파일 마지막 10줄만 출력

   df : 파일시스템 사용가능 용량 체크

   du : 특정 디렉토리 모든 파일
- 디렉토리 전체 크기 확인 : du -sh guestbook

chmod : 권한 변경


  1. vi 편집기 - 명령모드로 돌아오기 위해서는 esc키를 누름.

    [입력모드]
    i,a,o : 입력

   x : 삭제

   dd : 한줄 삭제

[라스트라인 모드]
/패턴 : 검색

   :%s/찾을문자열/바꿀문자열/g 

   :set number -> ~/.vimrc에 넣어주면 번호 자동 생성
echo "set number" > .vimrc

[명령모드]
:w : 저장

   :q : 종료 

   :wq : 저장 후 종료

   :wq! : 저장 후 강제 종료(read only 파일일 때 사용할 수 있음.)


  1. 허가권과 소유권

   user group other 
rwx rwx rwx
7 7 7

   r : 읽기, w: 쓰기, x: 실행

   r-- --- --- 400 : 권한없음
rw- rw- r-- 664 :
rwx rwx r-x 755

   디렉토리 w : 디렉토리에서 파일을 생성,삭제 할 수 있는 권한

   디렉토리 x : cd로 디렉토리에 접근할 수 있는 권한

권한변경

  • sudo chmod 400 파일명 : 파일의 허가권을 r-- --- --- 로 변경(다 쓰기)
  • sudo chmod u+x 파일명 : 파일 소유자의 허가권에 r 권한 추가(권한 줄 부분만)
  • sudo chmod o-w 파일명 : 파일 소유자/그룹 이외의 사용자 권한에서 쓰기권한 제거
  • sudo chown ubuntu.ubunt 파일명 -
  • sudo chown ubuntu 파일명 -> 소유자만
  • sudo chgrp ubuntu 파일명 -> 소유그룹만

  1. 패키지 및 서비스 관리

   1) 우분투 

      sudo apt update

      sudo apt install vsftpd

      sudo apt remove vsftpd

   2) Amazon linux, Rocky linuxRedhat

      sudo yum update

      sudo yum install vsftpd

      sudo yum remove vsftpd

      sudo systemctl start vsftpd

      sudo systemctl stop vsftpd

      sudo systemctl restart vsftpd

      sudo systemctl enable vsftpd

  1. 프로세스 관리

sudo ps -ef | grep 패턴

sudo kill -9 프로세스ID

sudo kill -9 $(pgrep 프로세스명)

  1. 네트워크 관리

ip addr : IP주소 확인

ip route : 라우팅 테이블 확인

nslookup : DNS 동작 확인

ping : 원격 호스트와 통신 테스트(방화벽에서 차단하고 있는 경우가 많음)

  1. 그 외

wget : url을 이용하여 다운로드

curl : 셸에서 페이지 접속 테스트, curl ifconfig.me 현재 시스템에서 사용하고 있는 공인IP주소 확인 (리눅스) 기본명령어


Netstat

  • netstat -apv TCP

이 명령은 열린 포트 및 활성 포트를 포함하여 Mac의 TCP 연결 만 반환합니다. 또한 자세한 출력을 사용하여 각 연결과 관련된 PID를 나열합니다.

  • netstat -a | grep -i "듣기"

AWS 실습

  • 실습하기

  • 인스턴스 3개 생성 (아래 표 참고)
  • svr3에 도커설치 및 MySql 설정
    => 간단히 말해서 컴퓨터를 빌려 Docker를 이용해 앱을 실행하고, 네트워크를 설정시켜 외부(인터넷)에서 접속이 가능하도록 하자


로컬

//앱파일 및 키파일 인스턴스로 복사 
  935  ssh -i guestbook.zip ubuntu@57.180.30.138
  936  ssh -i ljy2_keypair.pem ubuntu@57.180.248.108

svr1 & svr2(퍼블릭, ubuntu)

    3  sudo apt install unzip
   29  unzip guestbook             //앱 압축풀기
    7  cd guestbook/src/main/resources
    8  vi application.properties   //환경설정
   11  scp -i ljy_keypair.pem guestbook.zip ubuntu@3.112.71.70:/home/ubuntu
   20  sudo apt install openjdk-8-jdk //파일실행 위한 jdk 다운로드 
   24  java -version
   25  ls
   43  chmod u+x mvnw mvnw.cmd //권한부여
   44  ./mvnw clean package    //빌드
   45  cd target               
   46  sudo java -jar guestbook-0.0.1-SNAPSHOT.jar //실행(서버확인 후)
   

svr3(프라이빗, Amazin Linux & Mysql db)

   62  sudo yum update
   63  sudo yum install docker -y
   64  docker -v
   65  sudo service docker start
   66  sudo usermod -aG docker ec2-user
   67  exit
   68  sudo service docker start
   70  docker container run -d     --name=mysqldb     --restart=always     -e MYSQL_ROOT_PASSWORD=education     -e MYSQL_DATABASE=guestbook     -p 3306:3306     yu3papa/mysql_hangul:2.0

AWS 설정

  • 순서

  • EC2 3개 생성 -> 보안그룹 통일 (svr1, svr2 - public & ubuntu / svr3 - private & Amazon Linux)
  • svr3 인바인드 규칙 추가(HTTP)
  • NAT 게이트웨이 생성(현 실습에선 관리자가 진행함.) & 라우팅 테이블 설정
  • 로드밸런서 설정
    - 대상그룹 선택(svr1, svr2)
    - 과정 : 생성->인스턴스 -> 이니셜(ljy-group) & 기본값 -> 다음 -> 대상 svr1, 2 보류중 선택 -> 새 로드블랜서 생성(오른쪽 위) -> 이름(ljy-loadbalancer), 네트워크매핑 두 개 선택하기, 보안그룹 svr1, 그룹(ljy-group), 나머진 기본값 -> 생성하기
    - 로드밸런서 주소 : 로드밸런서 -> 세부정보 -> DNS 이름(주소) -> 이 이름으로도 서버에 접속이 됨.

0개의 댓글