DB만들기 (데이터 쌓기) : 완강 후 혼자 만들어보기
클라이언트, 서버 각각 어디에 뭐가 있는지 확인
서버 만들기
1) 클라이언트로부터 받을 데이터 없음
2) 리뷰는 여러개 맞기 : find 이용하여 찾기
same_ages = list(db.users.find({'age':21},{'_id':False}))
3) 변수명 변경
4) 메시지 내려줄 필요 없으므로 내가 지정한key : value(바꾼 변수명) 넣기
@app.route('/review', methods=['GET'])
def read_reviews():
reviews = list(db.bookreview.find({},{'_id':False}))
return jsonify({'all_reviews': reviews})
5) pymongo 정렬 기능 사용
클라이언트 만들기
1) movie_stars 값 가져오기
success: function (response) {
let mystars = response['movie_stars']
}
2) 콘솔에 mystars 확인
3) 반복문 (콘솔 키 값)
success: function (response) {
let mystars = response['movie_stars']
for (let i = 0; i < mystars.length; i++) {
let img_url = mystars[i]['img_url']
let like = mystars[i]['like']
let name = mystars[i]['name']
let recent = mystars[i]['recent']
let url = mystars[i]['url']
}
4) 콘솔 확인
5) html 붙히기
동작 테스트
1) 브라우저에 잘 뜨는지 확인
2) robo 3T에서 1명 like 수 올리고 역순으로 화면에 나오는지 확인
클라이언트, 서버 각각 어디에 뭐가 있는지 확인
서버 만들기
1) name_give로 데이터 받을 수 있게
name_receive = request.form['name_give']
2) find_one 이용
target_star = db.mystar.find_one({'name' : name_receive})
3) find_one 통해 가져온 값에서 like 값만 가져오기
current_like = target_star['like']
4) 가져온 like 값에 +1을 더하고 그것을 update_one을 통해 업데이트
new_like = current_like + 1
db.mystar.update_one({'name': name_receive}, {'$set': {'like': new_like}})
5) 적절한 메시지로 변경
클라이언트 만들기
1) Ajax에 실어서 보내기
data: {name_give:name}
2) 페이지 새로고침
window.location.reload();
동작 테스트
1) 브라우저에서 like 눌리고 적용되는지 확인
2) 브라우저 적용됐으면 robo 3T 가서 like 잘 찍혔는지 확인
클라이언트, 서버 각각 어디에 뭐가 있는지 확인
서버 만들기
1) name_give로 데이터 받을 수 있게
2) delete_one 이용
db.mystar.delete_one({'name': name_receive})
3) msg 내용 변경
클라이언트 만들기
1) Ajax에 실어서 보내기
data: {name_give:name}
2) 페이지 새로고침
window.location.reload();
동작 테스트
1) 브라우저에서 삭제되는지 확인 후 robo 3T도 확인
mkdir abc
→ abc라는 폴더 만들기
ls
→ 현재 내 위치에 있는 폴더 및 프로그램 등 보기
cd abc
→ abc 폴더 들어가기
cd ..
→ 폴더 나가기
► 업로드 / 다운로드 해주는 프로그램
► 업로드나 다운로드할 방향으로 끌면 끝
cd 폴더명/
python3 파일명.py
sudo chmod 755 initial_ec2.sh
./initial_ec2.sh
ec2 컴퓨터 한국시간 세팅
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
파이썬 (python3 → python)
1) python3 명령어를 python으로 사용할 수 있게
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
pip (pip3 → pip)
1) pip3 설치
2) pip3 명령어를 pip으로 사용할 수 있게 하는 명령어
3) 한 줄 씩 복붙
# 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
mongoDB 설치
1) 설치 코드
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org
2) 실행
# 아무 반응이 없으면, 잘 실행된 것!
# 리눅스는 보통 잘 되면 아무것도 안나와옴
sudo service mongod start
3) mongoDB 접속 계정 생성
# '>' 표시가 나오면 MongoDB 접속한 것
mongo
# admin으로 계정 바꾸기
use admin;
# 계정 생성하기
# test, test → 아이디, 비밀번호
db.createUser({user: "test", pwd: "test", roles:["root"]});
# 나오기
exit
# MongoDB 재시작
sudo service mongod restart
4) mongoDB 외부에 열기
mongoDB는 디폴트로 내부에서만 접속 허용
그래서 외부에서 접근이 가능하도록 잠금을 풀어주는 것
# sudo: 관리자 권한으로 다음을 실행
sudo vi /etc/mongod.conf
# sudo 관리자 권한으로
# etc 폴더 아래
# mongod.conf 파일을
# Vim으로 켜
5) Robo 3T 이용해 내PC에서 EC2 mongoDB 접속
6) 포트포워딩 (80포트 → 5000포트)
80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
1) test.py를 app.py로 이름 바꾼 후 내용을 flask 기본코드로 변경
2) FileZilla로 기존 업로드했던 파일 모두 삭제한 후에 app.py 업로드
pip로 flask 설치
pip install flask
# pymongo도 동일하게 설치
pip install pymongo
설치 후 app.py 실행
python app.py
퍼블릭IPv4주소:5000 접속해보기
1) aws에서 자체적으로 막아놓은 포트 때문에 접속 안됨
포트 다 연 후 퍼블릭IPv4주소:5000 접속하면 접속됨
돌아가고 있는 flask 끄는 방법
Ctrl + C
Robo 3T 이용해 내PC에서 EC2 mongoDB 접속
1) 좌측 상단 PC 2대 모양 클릭
2) Create 클릭
3) 이름, 주소(퍼블릭IPv4주소) 넣고
4) 상단 Authentication 클릭
5) Perform authentication 체크
6) 생성한 아이디, 비번 입력 후 Save
- ID / PW 변경하고 싶을 때
→ 완전 처음 세팅하기 전에 변경하고 실행해야함
1) initial_ec2.sh 파일 에디터에서 열기
→ EC2한방에 세팅하기
2) mongoDB 쪽 user, pwd 변경
3) FileZilla로 업로드 후 실행
FileZilla로 app.py / static폴더 / templates폴더 업로드
GitBash로 app.py 실행
python app.py
퍼블릭IPv4주소:5000로 접속 확인
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
GitBash 다시 켜서 시작할 땐 방향키 ↑ 누르고 enter 닫기 눌러 종료해도 서버가 계속 돌게 하기
nohup python app.py &
서버 강제종료
# 미리 pid 값(프로세스 번호)확인
# pid값 = 옆에 app.py 적혀 있는 것의 번호
ps -ef | grep 'app.py'
# 프로세스 강제종료
kill -9 pid값
서버 다시 켜기
nohup python app.py &
★ GitBash 다시 켜서 시작할 땐 방향키 ↑ 누르고 enter ★
공유했을 때 예쁘게 나오게 하는 것
ps -ef | grep 'app.py'
kill -9 pid값1
kill -9 pid값2
nohup python app.py &
코드 오타 등
카카오나 페이스북 즉시 업데이트 X
1) 성능T상의 문제로 og 태그를 바로 업데이트 하지 않기 때문
2) 수동으로 초기화(캐쉬삭제)해야 함