2022-01-29~03 TIL

yeopto·2022년 2월 3일
0

TIL

목록 보기
23/24
post-thumbnail

한 것

  1. Chapter 4, 5 마무리
  2. alonememo 토이프로젝트 마무리 → 내일 복습할 겸 기능 추가 후 배포까지 해볼 예정 (포트 포워딩, nohup 설정 공부 후)
  3. moviestar 토이프로젝트 마무리(CRUD 구현, aws 배포)

TIL

  1. AWS
    • EC2 서버 종료하는 법 (1년 후 자동결제 방지)
      • 대상 인스턴스에 마우스 우클릭 → 인스턴스 상태 → 종료를 클릭하면 인스턴스를 완전히 삭제할 수 있다. 중지는 잠시 컴퓨터를 꺼놓은 것, 종료는 컴퓨터를 버리는 것이라고 이해하면 된다.
    • SSH
      • 다른 컴퓨터에 접속할 때 쓰는 프로그램. 서로 22번 포트가 열려있어야 접속 가능하다. EC2 경우 이미 22번 포트가 열려있음.

      • AWS EC2 인스턴스 서버 컴퓨터에 SSH로 접속하는 법

        ssh -i 받은키페어를끌어다놓기 ubuntu@AWS서버컴퓨터내퍼블릭아이피 # 운영체제를 리눅스체제인 우분투를 선택했을 시
        
        # 새 키페어를 발급 받았을 땐 SSH로 접속하기 전에 changemode 사용해서 권한 바꿔주어야 함.
        sudo chmod 400 받은키페어끌어다놓기
    • 많이 쓰는 리눅스 명령어
      cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기
      
      sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
      sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)
    • filezilla → FTP(file transfer protocol) 소프트웨어 → 내 컴퓨터 파일(클라이언트 파일)을 다른 컴퓨터(서버 컴퓨터)로 옮겨주는 프로그램(지극히 개인적 이해)
      • site manager general 창에서 protocol은 SFTP로 설정 → SSH 방식의 FTP

      • host는 AWS 인스턴스 퍼블릭 아이피를 입력, port는 SSH이기에 22로 입력.

      • log on type은 우리가 SSH로 서버컴퓨터에 접속할 때 키페어를 사용하기에 Key file로 설정해준다.

      • user는 ubuntu(서버 컴퓨터 운영체제에 따라 다를 듯), 키 파일 디렉토리 위치 설정해준다. 그리고 확인(OK)를 클릭하면 내 컴퓨터와 서버컴퓨터 통신설정완료.

      • 파일을 옮긴 뒤 파이썬 테스트 파일을 ec2 인스턴스(우분투)에서 실행시켜보면 실행이 되는 걸 확인할 수 있다.

      • 우분투에서 파이썬 명령어 팁

        # python 이라는 명령어로 3 버전 이상을 실행하도록 하는 명령어.
        sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
        
        # pip3 설치 -> 플라스크 서버를 실행해야할 때 패키지 설치가 필요하기 때문.
        sudo apt-get update
        sudo apt-get install -y python3-pip
        
        # 버전 확인
        pip3 --version
        
        # pip3 대신 pip 라고 입력하기 위한 명령어.
        # 아래 명령어를 입력하면 pip 라고 쳐도 pip3를 작동시킬 수 있음.
        sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
        
        # 패키지 설치 -> 맥OS와 비슷
        pip install [패키지이름]
        
        # flask로 만든 app.py를 실행시키면 flask가 실행된다.(서버 실행)
        python app.py # 명령어 바꿔줬을 때, 안바꿔줬다면 python3 app.py로 실행시키면 됨.
    • AWS에서 5000포트 열어주는 방법
      • flask에서 앱을 만들고 동작하면 기본 포트는 5000으로 사용된다. → AWS에서 포트번호를 막고 있기 때문에 5000포트를 열어주어야 함. (장고는 8000)

        from flask import Flask
        app = Flask(__name__)
        
        @app.route('/')
        def home():
           return 'This is Home!'
        
        if __name__ == '__main__':  
           app.run('0.0.0.0', port=5000, debug=True)
      • cf ) app.run 에서 ‘0.0.0.0’은 누구나 접속할 수 있게 설정 해놓은 것이고 포트와 디버그 가능여부도 설정할 수 있다.

      • EC2 관리 콘솔에서 실행중인 인스턴스를 클릭후 description(설명)에서 AWS EC2 Security Group(보안 그룹)을 눌러 들어 감(launch-wizard ~ 있음)

      • 해당 보안그룹을 클릭한 뒤 Edit inbound rules(인바운드 규칙 설정)을 선택한다.

      • HTTP = 80(기본포트) / SSH = 22 / Custom TCP(flask) = 5000 / Custom TCP(mongoDB) = 27017로 설정해준다.

      • protocol은 전부 TCP, Source도 전부 anywhere(6말고 4)로 설정하고 저장해준다. → anywhere 설정하면 알아서 옆에 “0.0.0.0”이 뜨는거 같음.

      • 이제 http로 내 EC2 퍼블릭 아이피에 :5000포트로 접속해주면 잘 작동 되는 것을 확인할 수 있음.

    • 서버에 DB세팅
      • EC2에 mongoDB 설치하고 실행하기

        # EC2 터미널에 차례대로 한 줄씩 입력
        
        wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
        
        echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
        
        sudo apt-get update
        
        sudo apt-get install -y mongodb-org
        
        # ----------------------------------- 설치 완료
        
        # MongoDB 실행하기
        
        sudo service mongod start
      • mongoDB 접속 계정 생성하기

        • 만든 mongoDB를 만든 사람만 외부에서 접속할 수 있게 하기 위해 접속에 필요한 아이디와 비밀번호를 설정해야함. → 안하면 누구나 접속해서 DB정보를 볼 수 있게 됨.

          # 1. mongoDB 쉘 들어가기
          mongo
          
          # 좌측에 '>'표시 나오면 성공적으로 접속한 것
          
          # 2. admin으로 계정 바꾸기
          use admin;
          
          # 3. 계정 생성하기
          db.createUser({user: "test", pwd: "test", roles:["root"]});
          
          # "test", "test" 자리에 내가 넣고 싶은 아이디/비번 넣으면 됨.(영어만 가능)
          # Successfully added user: 뜨면 성공.
          
          # 4. 쉘에서 나오기
          exit
          
          # 5. mongodb 재시작
          sudo service mongod restart
      • mongoDB 외부에 열어주기

        • mongoDB는 기본적으로 같은 IP 안에서만 접속을 허용. → 외부에서 접근가능하도록(내 컴퓨터에서 서버 DB상태를 볼 수 있게) 잠금을 풀어주어야함.

          # EC2에서 실행시켜야 함 vim 사용
          
          sudo vi /etc/mongod.conf
          
          # vim으로 텍스트를 열어서 아래로 가보면 "#network interfaces"가 있음
          # port는 건들지말고 bindIP를 0.0.0.0으로 바꿔준다.
          # 그 다음 밑밑에 "#Security:"가 있는데 이것을 "#"빼주고
          # 밑에다 들여쓰기하고 "authorization: enabled"를 추가해준다.
          # esc 누르고 :wq 저장후 빠져 나온 뒤 db 재시작.
          
          sudo service mongod restart 
      • Robo3T로 내 컴퓨터에서 EC2서버에 있는 mongoDB 원격접속하기

        • 좌측 상단 컴퓨터 아이콘 클릭 → connections창에서 좌측 상단에 create클릭 → connection Settings창 connection탭에서 type은 direct connection / name은 알아서 설정 / Address는 EC2 퍼블릭 ip주소에 포트번호 27017 설정
        • Authentication탭에서 perform authentication을 체크하고 database는 admin / EC2에서 생성한 계정 아이디와 비밀번호를 입력 후 save. 그리고 connect해서 연결하면 됨.
    • 업로드 후 실행하기
      • filezilla로 옮기기 전, 일단 DB실행코드가 있는 앱파일에 EC2 서버 MongoDB 아이디와 비밀번호를 입력해주어야 한다.

        client = MongoClient('mongodb://설정한아이디:비밀번호@내AWS아이피', 27017)
        
        # DB실행코드가 있는 앱파일에서 저 부분만 바꿔주면 된다.
        # 즉, test:test@localhost와 같다.
      • 그 후 서버 실행에 필요한 파일들을 옮겨준다. ex) app.py, templates폴더, static폴더

      • 실행에 필요한 패키지들을 설치해준뒤 실행하고 5000포트로 접속하면 완료.

profile
https://yeopto.github.io로 이동했습니다.

0개의 댓글