코딩 공부 다섯번째

Grolar Kim·2021년 9월 17일
0

플라스크 서버에서 만들었던 홈페이지를 인터넷에 올리는 것을 배웠다.


내 프로젝트를 서버로 올리기

IP 주소와 포트

"우리가 접속하는 컴퓨터는 숫자로 되어있는 IP 주소가 붙어있어요. 우리가 아는 URL 은 우리가 알아보기 쉽게하는 등의 이유로 IP 주소를 알파벳으로 바꾼 거에요. 이렇게 변환해주는 시스템을 DNS 라고 합니다."

EC2서버 구매페이지

AWS EC2 콘솔페이지

나는 UBUNTU 18.04 서버를 사용함

AWS EC2에 접속하기

SSH(Secure Shell Protocol)

"다른 컴퓨터에 접속할 때 쓰는 프로그램입니다. 다른 것들 보다 보안이 상대적으로 뛰어납니다.
접속할 컴퓨터가 22번 포트가 열려있어야 접속 가능합니다. AWS EC2의 경우, 이미 22번 포트가 열려있습니다. "

Window의 경우 ssh가 없으므로, git bash라는 프로그램을 이용!

  • gitbash를 실행하고, 아래를 입력!

    "ssh -i 받은 키페어를 끌어다놓기 ubuntu@AWS에 적힌 내아이피"
    git bash를 종료할 때는 exit 명령어를 입력하여 ssh 접속을 먼저 끊어주세요.

연결 전

연결 후

간단한 리눅스 명령어들

ls: 내 위치의 모든 파일을 보여준다.
pwd: 내 위치(폴더의 경로)를 알려준다.
mkdir: 내 위치 아래에 폴더를 하나 만든다.
cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.
cd .. : 나를 상위 폴더로 이동시킨다.
cp -r [복사할 것][붙여넣기 할 것]: 복사 붙여넣기
rm -rf [지울 것]: 지우기
sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)

서버 세팅하기

filezilla를 이용하여 서버에 파일을 올릴 수 있었음


정보들을 입력하고, ok 누르면 서버의 파일들을 볼 수 있음
(Host: 내 EC2서버의 ip // User: ubuntu 로 입력)


마우스로 드래그 해서 파일을 업로드/다운로드하면 됨

파이썬 파일을 실행하고 싶으면 콘솔창에 python3 test.py 를 작성하면 됨

서버환경 세팅하기

나는 수업중에 받은 파일로 세팅을 했다.

// UTC to KST '한국시간 세팅'
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
//python3 -> python '파이썬3을 파이썬으로'
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
//pip3 -> pip 'pip3을 pip로'
sudo apt-get update
sudo apt-get install -y python3-pip
pip3 --version
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
//port forwarding '포트포워딩 80포트를 5000으로'
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
//MongoDB - install 'mongoDB 설치'
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo mkdir -p /data/db
//MongoDB - run 'mongoDB 실행'
sudo service mongod start
sleep 7
netstat -tnlp
//MongoDB set user, set conf file 'mongoDB계정 생성 및 설정'
mongo admin --eval 'db.createUser({user: "test", pwd: "password", roles:["root"]});'
sudo sh -c 'echo "security:\n authorization: enabled" >> /etc/mongod.conf'
sudo sed -i "s,\(^[[:blank:]]bindIp:\) .,\1 0.0.0.0," /etc/mongod.conf
sudo service mongod stop
sudo service mongod start
sleep 5
netstat -tnlp

robo3T사용 내 컴퓨터에서 서버의 DB에 접속

  1. 좌측 상단 빨간 상자 내 아이콘을 클릭합니다.
  2. Create 클릭
  3. 접속 정보를 세팅합니다.(내 AWS IP, 27017포트)
  4. 상단 Authentication 탭을 클릭합니다.
  • Perform authentication 체크박스를 클릭합니다.
  • 생성한 계정의 아이디와 비밀번호를 입력하고, 'save'를 클릭합니다.(세팅시 설정한 아이디 비밀번호)

flask 서버 설치

리눅스 서버에 flask를 설치하기

pip install flask

AWS 포트 열어주기

"EC2 서버(=가상의 내 컴퓨터)에서 포트를 따로 설정하는 것 외에도, AWS EC2에서도 자체적으로 포트를 열고/닫을 수 있게 관리를 하고 있습니다."
→ "그래서 AWS EC2 Security Group에서 인바운드 요청 포트를 열어줘야 합니다.일단, EC2 관리 콘솔로 들어갑니다. 그리고 보안그룹(영문: Security Group)을 눌러 들어갑니다. 여기선 launch-wizard-1 이라고 쓰여 있네요."


해당 보안그룹을 클릭합니다. 그 후 Edit inbound rules를 선택합니다.

세 가지 포트를 추가해봅니다.
→ 80포트: HTTP 접속을 위한 기본포트
→ 5000포트: flask 기본포트
→ 27017포트: 외부에서 mongoDB 접속을 하기위한 포트

http:// 내아이피:5000
→ 잘 작동하는 것을 확인할 수 있음

원페이지쇼핑몰 업로드해보기

기존의 app.py에서 mongoDB 접속 세팅을 로컬에서 서버로 바꿔줘야함

기존
client = MongoClient('localhost', 27017)

바꿔줘야하는 것
client = MongoClient('mongodb://test:test@localhost', 27017)

pymongo 서버에 설치하기

pip install pymongo

app.py 실행하기

python app.py

포트포워딩

포트 번호 없애기 - 기본 개념

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

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

nohup 설정하기

Git bash 또는 맥의 터미널을 종료하면 (=즉, SSH 접속을 끊으면) 프로세스가 종료되면서, 서버가 돌아가지 않고 있습니다.

  • 원격 접속을 종료하더라도 서버가 계속 돌아가게 하기

    nohup python app.py &

  • 서버 종료하기 - 강제종료하는 방법

    아래 명령어로 미리 pid 값(프로세스 번호)을 본다
    ps -ef | grep 'app.py'

    실행중인 프로세스중 'app.py'가 들어간 프로세스를 표시해준다. pid는 13870과 13880이 나왔다

    아래 명령어로 특정 프로세스를 죽인다
    kill -9 [pid값]

  • 다시 켜는 법

    nohup python app.py &

  • 접속해보기

    http:// 내AWS아이피/

도메인 구입 / 연결

'가비아'라는 회사에서 도메인 구입 후 연결

DNS 관리툴

도메인 연결

DNS 설정

호스트 이름에 @, IP주소에 AWS IP주소를 입력합니다

og태그

static 폴더 아래에 이미지 파일을 넣고, 
각자 프로젝트 HTML의 <head>~</head> 사이에 
아래 내용을 작성하면 og 태그를 개인 프로젝트에 사용할 수 있습니다.
<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="{{ url_for('static', filename='ogimage.png') }}" />

참고! 이미지를 바꿨는데 이전 ogimage가 그대로 나오면 그것은 페이스북/카카오톡 등에서 처음 것을 한동안 저장해놓기 때문입니다.
페이스북 og 태그 초기화 하기: https://developers.facebook.com/tools/debug/
카카오톡 og 태그 초기화 하기: https://developers.kakao.com/tool/clear/og

0개의 댓글