5주차 개발일지

HJ·2022년 1월 4일
0

웹개발 종합반

목록 보기
5/5

1. Flask 프레임워크를 활용해서 API 만들기
무비스타 실습

  • 만들 기능: 영화인 정보를 카드로 보여주기(Read)
  • 화면에 보여지는 데이터
    영화인 이름
    영화인 이미지: img src
    좋아요 개수
    최근 작품
    크롬 개발자도구에서 어떤 요소에 어떤 데이터가 있는지 확인 가능
  • API 만들고 사용하기 - 영화인 조회 API (Read → GET)
    👉 만들 API
  1. 조회(Read) 기능: 영화인 정보 전체를 조회
  2. 좋아요(Update) 기능: 클라이언트에서 받은 이름(name_give)으로 찾아서 좋아요(like)를 증가
  3. 삭제(Delete) 기능: 클라이언트에서 받은 이름(name_give)으로 영화인을 찾고, 해당 영화인을 삭제
    하단의 코드를 이용하면 된다.
  • 저장 - 예시
    doc = {'name':'bobby','age':21}
    db.users.insert_one(doc)

  • 한 개 찾기 - 예시
    user = db.users.find_one({'name':'bobby'})

  • 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
    same_ages = list(db.users.find({'age':21},{'_id':False}))

  • 바꾸기 - 예시
    db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

  • 지우기 - 예시
    db.users.delete_one({'name':'bobby'})

  • 클라이언트 부분은 이번에는 생략하겠다.

2. 내 프로젝트를 서버에 올리기

  • AWS에서 ec2 서버 구매 후 접속
  • 리눅스 주요 명령어
ls: 내 위치의 모든 파일을 보여준다.

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

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

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

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

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

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

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)
  • 파이썬 파일 실행해보기
    터미널에서
    python 파일명
    입력
  • pip로 패키지 설치(예: flask)
    pip install flask
    입력
  • 포트포워딩
    80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
  • nohup 설정하기
    맥의 터미널을 종료하면 (=즉, SSH 접속을 끊으면) 프로세스가 종료되면서, 서버가 돌아가지 않는다. 하지만 원격접속을 끊어도, 서버는 계속 동작해야 하므로 nohup을 설정한다.

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

```
# 아래의 명령어로 실행하면 된다
nohup python app.py &
```

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

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

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

다시 켜기

```
nohup python app.py &
```

3. og 태그

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

이로써 5회차 수업이 모두 끝났다. 사실 나는 완전 쌩초보이기 때문에 2회독을 했는데, 아직도 모르는거 투성이에 완벽하게 이해하지 못하는 것들도 많다. 특히 서버-클라이언트 연결 작업은... 너무 어렵다. :(
연습 그리고 복습만이 익숙해 지는 길이니 계속 열심히 하자!!

0개의 댓글