# 원격 접속 (원격접속키 OS@공개ip주소)
ssh -i 키파일붙여넣기 ubuntu@공개ip

# python3 -> python   // python3 명령어를 python으로 사용할 수 있게 하는 명령어
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 대신 pip 라고 입력하기 위한 명령어
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

# port forwarding  // 80포트(http)로 들어오는 요청을 5000포트로 넘겨주는 명령어
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

→ 80포트: HTTP 접속을 위한 기본포트
→ 5000포트: flask 기본포트

# pip 설치 명령어
pip install 라이브러리|프레임워크

# 파이썬 파일 실행
python app.py

## **nohup 설정하기**
- 원격 접속을 종료하더라도 서버가 계속 돌아가게 하기
nohup python app.py &

- 서버 종료하기 - 강제종료하는 방법
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

 

 

코드 변경 후 og태그 초기화 주소

- 페이스북 og 태그 초기화 하기: [https://developers.facebook.com/tools/debug/](https://developers.facebook.com/tools/debug/)
- 카카오톡 og 태그 초기화 하기: [https://developers.kakao.com/tool/clear/og](https://developers.kakao.com/tool/clear/og)

 

 

CLI 자주 쓰는 명령어

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

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

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

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

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

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

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

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

'Development > Python' 카테고리의 다른 글

반복문 돌려가며 Dictionarys in Array 로 만들기  (0) 2022.08.28
Flask, mongoDb 사용하여 파일 저장 기능 만들기  (0) 2022.08.28
Flask session 사용  (0) 2022.08.21
Flask  (0) 2022.07.23
python, mongoDb  (0) 2022.07.22

Flask Web Framework

파이썬으로 웹 개발을 하기 위한 프레임워크 중 하나.

서버를 쉽게 만들 수 있다.

django와 함께 파이썬 웹 프레임워크의 양대산맥이며 각기 장단점이 존재한다.

 

Flask - 가볍고 자유로움 (모듈의 선택폭이 넓음)

Django - 편리하고 생산성이 높음(자체 내장 기능으로 익숙해지면 DB 관리가 쉽다)

 

django가 상대적으로  사용자 수는 많아 소스 구하기는 쉽다고 한다.

 

 

 

Flask 기본 폴더구조 

Projects

  ㄴstatic 폴더 (이미지, css파일)

  ㄴtemplates 폴더 (html파일)

  ㄴapp.py 파일

 

 

flask 시작 코드)

1
2
3
4
5
6
7
8
9
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)
cs

http://localhost:5000/ 에 접속해서 로컬(개인) 호스트 작업이 가능하다.

 

 

flask url 나누기)

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def home():
   return 'This is Home!'
 
@app.route('/mypage')
def mypage():  
   return 'This is My Page!'
 
if __name__ == '__main__':  
   app.run('0.0.0.0',port=5000,debug=True)
cs

 

 

flask html 파일 불러오기)

1
2
3
4
5
6
7
8
9
10
11
12
from flask import Flask, render_template
app = Flask(__name__)
 
## URL 별로 함수명이 같거나,
## route('/') 등의 주소가 같으면 안됩니다.
 
@app.route('/')
def home():
   return render_template('index.html')
 
if __name__ == '__main__':
   app.run('0.0.0.0', port=5000, debug=True)
cs

 

 

데이터 주고 받는 법

0) jquery import  (html)

1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
cs

 

1) request,  jsonify import  (python)

1
from flask import Flask, render_template, request, jsonify
cs

 

GET 요청 API코드  (python)

1
2
3
4
5
@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success''msg''이 요청은 GET!'})
cs

 

GET 요청 확인 Ajax코드  (html)

1
2
3
4
5
6
7
8
$.ajax({
    type: "GET",
    url: "/test?title_give=봄날은간다",
    data: {},
    success: function(response){
       console.log(response)
    }
  })
cs

 

POST 요청 API코드  (python)

1
2
3
4
5
@app.route('/test', methods=['POST'])
def test_post():
   title_receive = request.form['title_give']
   print(title_receive)
   return jsonify({'result':'success''msg''이 요청은 POST!'})
cs

 

POST 요청 확인 Ajax코드  (html)

1
2
3
4
5
6
7
8
$.ajax({
    type: "POST",
    url: "/test",
    data: { title_give:'봄날은간다' },
    success: function(response){
       console.log(response)
    }
  })
cs

 

 

HTTP 요청 메서드

프론트에서 백으로 넘겨줄 데이터가 없을 때는 GET

프론트에서 백으로 넘겨줄 데이터가 있을 때는 POST를 자주 사용한다.

웹 개발용 python 라이브러리

 

 

 

requests

python에서 ajax처럼 데이터를 받기 위한 라이브러리

 

사용 예)

1
2
3
4
5
6
7
8
9
import requests # requests 라이브러리 설치 필요
 
= requests.get('URL')
rjson = r.json()
 
gus = rjson['RealtimeCityAir']['row']
 
for gu in gus:
    print(gu['MSRSTE_NM'], gu['IDEX_MVL'])
cs

 

 

 

bs4 > BeautifulSoup

html 긁어올 때 사용

 

사용 예)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import requests
from bs4 import BeautifulSoup
 
# URL을 읽어서 HTML를 받아오고,
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
 
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
soup = BeautifulSoup(data.text, 'html.parser')
 
# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
 
# movies (tr들) 의 반복문을 돌리기
for movie in movies:
    # movie 안에 a 가 있으면,
    a_tag = movie.select_one('td.title > div > a')
    if a_tag is not None:
        # a의 text를 찍어본다.
        print (a_tag.text)
cs

선택자 사용 법)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
 
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
 
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
 
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')
cs

태그 안의 텍스트를 찍고 싶을 땐 → 태그.text

태그 안의 속성을 찍고 싶을 땐 → 태그['속성']

 

 

 

pymongo > MongoClient

mongodb 제어

 

사용 예)

1
2
3
4
5
6
7
8
9
10
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.mydb
 
doc = {
    'name':'bob',
    'age':27
}
 
db.users.insert_one(doc)
cs

사용 예2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
 
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
 
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
 
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
 
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
cs

 

 

 

dnspython

python용 dnstoolkit

https://www.dnspython.org/examples/

ajax 기본 골격

1
2
3
4
5
6
7
8
$.ajax({
    type: "GET",
    url: "여기에URL을입력",
    data: {},
    success: function(response){
    console.log(response)
    }
})
cs

 

Api 로부터 데이터를 요청해 오브젝트 형식으로 받아온다.

 

console.log로 확인 후 임시 저장 공간에 넣어 사용한다.

'Development > JavaScript' 카테고리의 다른 글

setTimeout, setInterval  (0) 2022.08.21
회원가입 유효성 검사 (signup validation)  (0) 2022.08.21

+ Recent posts