FrontEnd :-)

[항해99] 사전준비-5 Flask, AWS, 도메인 본문

항해99_7기/사전 준비

[항해99] 사전준비-5 Flask, AWS, 도메인

code10 2022. 5. 2. 22:51

웹종합개발반 2회 완강! 입학시험 남았다. 내일은 총정리 복습!

 

HTML > CSS > Bootstrap > Javascript >JQuery > API/Ajax > Python > Crawling > mongoDB > Flask(post,get) > 서버/AWS

 

배운 점: 

Flask 기초(연습{버킷리스트}), AWS 서버 세팅, 도메인 연결, og 태그(아래 테이블)

 

어려운 점: 

5주 차 버킷리스트 만들기는 어렵다. Get 방식 index.html에서 ajax에 조건문 함수 삽입, Post 방식 app.py에서 count 설정이나, 문자열을 숫자로 바꾸는 int() 사용 등이 복잡성을 더했다.  

 

노트: 

5주 차 강의 - aws 새 서버 구매해서 연결하고, 그래서 가비아에  dns 설정 다시 하고, 파일질라에 서버 연결도 다시 했다. 애먹은 건, og 이미지. 넣은 이미지가 제대로 보이지 않아서, 캐시를 지우고 시도했지만 잘 되지 않았다. 지우고 새로 복사하고 여러 가지 시도를 해서 제대로 나왔는데, 여러 가지를 해서 무엇 때문에 나오지 않았고, 나오게 되었는지 정확히 모르겠다. 아무튼 성공. 

 

Og:meta 태그 테스트하려면?

개발자 도구https://developers.facebook.com/tools/debug/

 

[Table] 강의: Flask 기초(연습{버킷리스트}), AWS 서버 세팅, 도메인 연결, og 태그 (5-1~5-14)

강의 내용(내 기준, 알아둘 점) 코드 예시
5-1 파일질라 설치, 가비아 가입 도메인 구매  
5-2 버킷리스트    
5-3  POST 연습(기록하기) @app.route("/bucket", methods=["POST"])
def bucket_post():
    bucket_receive = request.form["bucket_give"]

    count = db.bucket.find({},{'_id':False}).count()
    num = count + 1

    doc = {
        'num':num,
        'bucket': bucket_receive,
        'done':0
    }

    db.bucket.insert_one(doc)
    return jsonify({'msg':'등록 완료!'})
5-4 GET 연습(보여주기) function show_bucket(){
    $('#bucket-list').empty()
    $.ajax({
        type: "GET",
        url: "/bucket",
        data: {},
        success: function (response) {
            let rows = response['buckets']
            for (let i = 0; i < rows.length; i++) {
                let bucket = rows[i]['bucket']
                let num = rows[i]['num']
                let done = rows[i]['done']

                let temp_html = ``
                if (done == 0) {
                    temp_html = `<li>
                                    <h2>✅ ${bucket}</h2>
                                    <button onclick="done_bucket(${num})" type="button" class="btn btn-outline-primary">완료!</button>
                                </li>`
                } else {
                    temp_html = `<li>
                                    <h2 class="done">✅ ${bucket}</h2>
                                </li>`
                }
                $('#bucket-list').append(temp_html)
            }
        }
    });
}
5-5  POST(완료하기) @app.route("/bucket/done", methods=["POST"])
def bucket_done():
    num_receive = request.form["num_give"]
    db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
    return jsonify({'msg': '버킷 완료!'})
5-6    
5-7 언제나 요청에 응답하려면, 
1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야 하고,
2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소로 나의 웹 서비스에 접근할 수 있어야 함.


AWS 라는 클라우드 서비스에서 편하게 서버 관리 가능. 
->항상 놓을 있는 컴퓨터인 EC2 사용권 구입
 
5-8 AWS* AWS EC2 서버 구매
Ubuntu Server 18.04 또는 20.04 버전을 구매


SSH(Secure Shell Protocol) : 다른 컴퓨터에 접속할 쓰는 프로그램. 접속할 컴퓨터가 22 포트가 열려있어야 접속 가능합니다. AWS EC2 경우, 이미 22 포트가 열려있습니다.
 
5-9 # python3 -> python (python3를 python으로 사용할 수 있게 하는 명령어)
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10


# pip3 -> pip (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 (80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

FileZilla 사용법
 
5-10 pip install flask
pip install pymongo dnspython


AWS에서 5000포트를 열어주기
Edit inbound rules
  • 가지 포트를 추가. Anywhere-IPv4 클릭!
    → 80포트: HTTP 접속을 위한 기본포트
    → 5000포트: flask 기본포트
 
5-11 원격 접속 종료해도 서버가 계속 돌아가게 하기
nohup python app.py &


서버 종료 - 강제 종료
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill
 
5-12 도메인 연결  
5-13 og 태그
<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />
 
5-14 homework**    

*5-8 터미널 명령어

더보기

Mac은 ssh가 있어서, 명령어로 바로 접근 가능!

sudo chmod 400 받은키페어를끌어다놓기 

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

 

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

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

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

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

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

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

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

 

sudo [실행할 명령어]: 명령어를 관리자 권한으로 실행한다.

sudo su: 관리가 권한으로 들어간다. (나올 때는 exit으로 나옴)

**5-14

 

Comments