서버 = 컴퓨터!!
언제나 요청에 응답하려면?
: 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야 한다.
-> AWS라는 클라우드 서비스에서 항상 켜 놓을 수 있는 컴퓨터인 EC2사용권을 구입해 서버로 사용하는 방법
: 모두가 접근할 수 있는 public IP address로 웹 서비스에 접근 할 수 있도록 해야한다.
-terminal에 아래 코드를 작성한다
sudo chmod 400 (키페어)
ssh (secure shell protocol)
: 다른 컴퓨터로 접속할 때 사용하는 프로그램으로 다른 것들보다 상대적으로 보안이 뛰어나며, 접속할 컴퓨터의 22번 포트가 열려있어야 접속 가능하다.
ssh -i (키페어) ubuntu@(AWS의 instance ip주소)
관련 메세지가 나올 경우 yes입력
리눅스
=> "쉘 명령어"를 통해 os를 조작한다
[가장 많이 쓰는 명령어]
ls : 현 위치의 모든 파일을 보여준다
pwd : 현 위치(경로)를 알려준다
mkdir : 현 위치 아래에 폴더를 하나 생성한다
cd [폴더명] : 폴더 내로 이동
cd .. : 상위 폴더로 이동
cp -r [복사할 것] [붙여넣기 할 것]: 복사/붙여넣기
rm -rf[지울 것] : 지우기
sudo [실행 할 명령어] : 명령어를 관리자 권한으로 실행한다
sudo su: 관리자 권한으로 들어간다
컴퓨터를 구매했으니, 세팅(업그레이드, db설치, 명령어 통일 등)을 해주어야 함.
~~# python3 -> python~~
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
:python3 명령어를 python으로 사용할 수 있게하는 명령어
~~# pip3 -> pip~~
sudo apt-get update
sudo apt-get install -y python3-pip
: pip3설치
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
: pip3 명령어를 pip으로 사용할 수 있게 하는 명령어
~~ # port forwarding~~
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
: 80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
포트 번호 없애기
만약 5000포트에서 웹 서비스가 실행될 경우, 매번 :5000을 뒤에 붙여야함.하지만, htt
p 요청에서 80포트는 기본으로 사용되기 때문에,:80을 붙이지 않아도 자동으로 연결이 됌.
포트 번호를 입력하지 않아도 자동으로 접속되기 위해선, 80포트로 오는 요청을 5000 포트로
전달하게 하는 포트포워딩(port forwarding) 을 사용하면 됌.
pip install flask
pip install pymongo
pip install dnspython
pip install certifi -나의 경우엔 certifi도 해주었음
python app.py
: AWS EC2에서 자체적으로 포트를 열고/ 닫을 수 있게 관리하고 있다.
EC2 관리콘솔 -> security group -> 인바운드 규칙 수정 -> 인바운드 규칙 추가
2가지 포트를 추가한다
80포트 | http접속을 위한 기본포트- ' anywhere-IPv4 '
5000포트 | flask기본포트 - ' anywhere-IPv4 '
: ssh접속을 끊어도 서버가 계속 돌게하기 위한 명령어 실행
nohup python 파일명.py &
반대로, 강제종료 하기 위한 코드
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill
가비아 접속 -> DNS 설정 -> ip주소에 AWS의 instance ip주소입력 -> 확인 및 저장
head태그 사이에 아래 내용 작성
<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />