항해99 | 웹개발 종합반 5주차

docu·2023년 2월 6일
0

항해99

목록 보기
5/15

5-1

filezilla: 클라우드 환경에 무엇을 올림, 파일을 보낼 수 있게 해주는 프로그램

가비아
개인으로 회원가입 ->my가비아

5-5~5-6주차 버킷리스트는 한번 더 봐야할듯
업데이트

5-7 내 플젝을 서버에 올리기

  • 웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답해줄 수 있는 서버에 프로젝트를 실행시켜줄 거에요.
  • 언제나 요청에 응답하려면,
    1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야하고,
    2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야해요.
  • 서버는 그냥 컴퓨터라는거 기억나시죠? 외부 접속이 가능하게 설정한 다음에 내 컴퓨터를 서버로 사용할 수도 있어요.
  • 우리는 AWS 라는 클라우드 서비스에서 편하게 서버를 관리하기 위해서 항상 켜 놓을 수 있는 컴퓨터인 EC2 사용권을 구입해 서버로 사용할 겁니다.

내 컴퓨터 계속 켜둘 수 없기 때문에 다른 사람의 컴퓨터를 빌려서 계속 올려둔다.
장점: 트래픽 대응도 쉬워지고, 서비스 붙이기 쉬워짐

EC2 콘솔페이지

인스턴스 시작 -> Ubuntu Server 20.04 (프리티어 사용가능이라고 되어있으면 1년동안 한대 무료, 한개 끄고 한개도 가능, 두개 이상 실행하지 않으면 가능) -> 검토 및 시작 -> 시작하기

창이뜨면 -> 새 키페어 생성 -> 키페어 sparta_mykey 하고 키페어 다운로드 누르고 -> 다운받으면 인스턴스 시작 누르기 -> 인스턴스 목록에서 보면 상태 대기중에서 기다리면 실행중으로 바뀜(컴퓨터를 켠것과 마찬가지다)

내가 새로 하나 만들고 싶다 인스턴스를! 그러면 중지는 컴을 끄는 거고 종료가 반납임. 새로 하고싶으면 종료하고 인스턴스 시작 눌러서 다시 만들기.

컴을 켰으니 이제 접속!
터미널-> sudo chmod 400 키페어 끌어놓고 엔터 -> 맥 비번
ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피 (ssh로 접속하기)

  • SSH(Secure Shell Protocol)
    • 다른 컴퓨터에 접속할 때 쓰는 프로그램입니다. 다른 것들 보다 보안이 상대적으로 뛰어납니다.
    • 접속할 컴퓨터가 22번 포트가 열려있어야 접속 가능합니다. AWS EC2의 경우, 이미 22번 포트가 열려있습니다. Mac OS: Mac은 ssh가 있어서, 명령어로 바로 접근 가능!

리눅스는 마우스로 뭘 하는게 아니라 다 명령어를 내려서 하는것

ls: 내 위치의 모든 파일을 보여준다.

pwd: 내 위치(폴더의 경로)를 알려준다.

mkdir: 내 위치 아래에 폴더를 하나 만든다.

cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.

cd .. : 나를 상위 폴더로 이동시킨다.

cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기

rm -rf [지울 것]: 지우기

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)

5-9 서버 세팅하기

구매한 서버에 파일을 올리고 서버를 실행하는 것

서버 환경 통일. 우리는 지금 막! 컴퓨터를 구매한 상태예요. 여기에 이런저런 세팅들(업그레이드, DB설치, 명령어 통일 등)을 해줘야 본격적으로 이용할 때 편리하답니다!

# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

python3라고 하고 명령어를 원래 쳐야하는데 굳이 치지 말고 python이라고 하고 명령어를 쓴다는 뜻

flask, dnspython 깔때 패키지를 설치해줄 수 있는 pip라는 패키지 마법사같은 것을 설치한것

마지막 줄은 localhost:5000을 떼는 명령어

*filezilla 켜기
왼쪽이 우리 컴, 오른쪽이 내가 산 컴퓨터
파이참에서 홈워크 폴더 열고
왼쪽 우리컴쪽에서 홈워크 들어간 상태에서
파일질라 파일 아래에 있는 사이트 관리자 그림 아이콘 클릭-> new site->'myec2'-> 오른쪽 일반>프로토콜 에서 FTP를 SFTP로 바꾸고-> 호스트는 aws 에서 인스턴스 세부정보에 있는 퍼블릭 아이피 붙여넣기->포트는 22번 -> 로그온 유형 키파일-> 사용자 ubuntu -> pem files로 파일 이름 옆에 있는거 바꿔주면 키파일 보임 열기-> 연결

shell로 만들어둔 폴더에 test.py나 실행하고 싶은 파일 옮겨 넣기

실행은 shell에서
ls -> cd sparta -> ls -> python.test.py

venv 빼고 다른 파일 filezilla로 옮겨두고
shell에서 다시 실행해보기
ls -> python app.py -> pip install flask -> pip install pymongo -> pip install dnspython -> python app.py ->(실행됨 파이썬 콘솔창에 active 처럼 뜸)

aws에서 인스턴스페이지-> 보안세부정보 클릭 -> edit inbound rules -> 규칙추가 -> 포트범위 5000 ->anywhere ipv4 -> 규칙추가 (80도 열어주기) -> 규칙저장

크롬에서 퍼블릭아이피:3000(포트번호) 이동 3000빼도 가능

  • 지금은 5000포트에서 웹 서비스가 실행되고 있습니다. 그래서 매번 :5000 이라고 뒤에 붙여줘야 하죠. 뒤에 붙는 포트 번호를 없애려면 어떻게 해야할까요?
  • http 요청에서는 80포트가 기본이기 때문에, 굳이 :80을 붙이지 않아도 자동으로 연결이 됩니다.
  • 포트 번호를 입력하지 않아도 자동으로 접속되기 위해, 우리는 80포트로 오는 요청을 5000 포트로 전달하게 하는 포트포워딩(port forwarding) 을 사용하겠습니다.
  • 리눅스에서 기본으로 제공해주는 포트포워딩을 사용할 것입니다.

5-11주차 nohup 설정하기

  • 현재 상황
    Git bash 또는 맥의 터미널을 종료하면 (=즉, SSH 접속을 끊으면) 프로세스가 종료되면서, 서버가 돌아가지 않고 있습니다. 그러나 우리가 원격접속을 끊어도, 서버는 계속 동작해야겠죠?
    • 원격 접속을 종료하더라도 서버가 계속 돌아가게 하기
      아래의 명령어로 실행하면 된다
    nohup python app.py &
    
    서버 종료하기 - 강제종료하는 방법
    ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

터미널 끈 상태에서 다시 접속

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피 (ssh로 접속하기)

ls -> cd sparta-> ls -> python app.py

control+c 해서 끄고

# 아래의 명령어로 실행하면 된다 (터미널꺼도 잘돌아감)
nohup python app.py &

#강제종료
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

정리 app.py로 작업한 것을 배포하고싶을때는 venv빼고 올리고 nohup으로 켜주면됨
작업 못한거 있으면 꺼주고 파일질라에서 지우고 작업물 다시 파일질라에서 올리고

5-11주차 도메인 연결하기

서비스 켜두고 도메인 열어야함
산 도메인 클릭-> dns 설정 -> 호스트이름 @ -> ip주소는 숫자만 들어가게 -> 확인->저장 -> 거의 바로됨

가비아: 문자와 숫자를 연결하는 전화번호부 같은 것을 운영

5-13주차 og태그

<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />

카톡 입장에서는 공유할때마다 크롤링하려면 힘듦
한번 공유된것은 저장을 해둠
이미지 바꿨는데도 예전 이미지 나온다면

0개의 댓글