몽고DB가 무엇인지
무료 호스팅을 받아보기
로깅
백엔드 mongodb 설치
IP, 메세지, 응답한 내용, 시간데이터
EC2) git clone 가지고 소스코드 가져오고 그 이후에는 git pull
데이터베이스는 데이터의 저장소다. 애플리케이션과 데이터베이스 사이에서 데이터베이스를 운영하고 관리하는 소프트웨어인 DBMS가 있다. DBMS방식에 따라 많은 유형이 나뉘고, DBMS에서 사용하는 언어를 크게 sql과 nosql로 나눈다.
sql
저장하고픈 항목이 늘어날 때마다 스키마를 변경해주어야 함.
중복 제거를 위해 정규화하도록 되어있는데, 데이터를 읽어올 때 수많은 join을 해야한다.
nosql 의 등장
인터넷이 널리 보급되면서 SNS가 많아짐. high-throughput 이 요구되고 low-latency가 요구됨. 다양한 사람들이 다양한 데이터를 만들어내면서 비정형 데이터가 증가함.
nosql 특징
MongoDB는 NoSQL 데이터베이스로, 문서 기반(Document-Oriented) 데이터 저장 방식을 채택한 오픈소스 DBMS
mongoDB에 회원가입을 하고 cluster를 만들고 그 안에 database를 만들었다.
보안 설정을 하면서 user 와 password를 설정해 주었다.
이 부분은 openai assistant를 사용할 때와 비슷하게 flask 코드 내에서 mongoDB로 database에 로그인 할 때 필요하다. 접근 허용 ip는 0.0.0.0/0 으로 모두 열어놓았다.
그럼 아래와 같은 화면을 통해 연결 상태와 저장된 데이터를 볼 수 있다.
현재 EC2 인스턴스에는 flask 코드를 복사해서 올려놓았다.
하지만 git을 이용해서 최신 코드를 pull 해올 수 있다면 편할 것 같아 레포지토리를 클론하는 과정을 진행하였다.
sudo apt-get update
sudo apt-get install git
git clone https://github.com/1hjjun/artor.git
//프로세스 ID 찾기
ps aux | grep airesumeAPI.py
//프로세스 kill
kill PID_number
//repository로 가서 명령어 실행
cd artor
git pull origin main
//nohup로 재시작
nohup python ~/artor/lesson4/airesumeAPI.py > output.log 2>&1 &
현재 vercel 과 ec2에 배포가 되어있는 상태지만 다시 vscode 상에서 코드를 수정해 localhost에서 잘 작동되게 만들고 배포를 해야한다.
그러기 위해 api 요청 부분을 http://localhost:5001/sendMessage로 수정해서 진행했다.
pip install pymongo dnspython
from pymongo import MongoClient
mongo_password = os.environ.get("MONGO_PASSWORD")
mongo_connection_string = f'mongodb+srv://aut7410:{mongo_password}@resumecluster.j7ejmtd.mongodb.net/?retryWrites=true&w=majority&appName=resumeCluster'
mongoclient = MongoClient(mongo_connection_string)
db = mongoclient.log
def get_ip():
if request.headers.get('X-Forwarded-For'):
ip = request.headers.get('X-Forwarded-For').split(',')[0]
else:
ip = request.remote_addr
return ip
//assistant 답변 return 부분 안에
ip = get_ip()
timestamp = datetime.now()
log = {
"ip_address": ip,
"user_message": user_input,
"response": ai_response,
"timestamp": timestamp
}
collection.insert_one(log)
EC2 에서 최신 코드를 git pull 로 받아와서 실행을 시키면 동작이 안된다. output.log로 오류 내용을 확인해 보니 pymongo와 dnspython 라이브러리 다운을 까먹었다. 쉽게 다운받아서 바로잡아준다.
백그라운드 실행까진 잘되었지만 mongoDB에 로그인이 안되는 것을 볼 수 있었다.
해결 : git은 .env 파일을 push하지 않는다. 제 3자가 github에 올라간 내 비번을 해킹할 수 있기 때문에 gitignore을 통해 push를 막아놓았다. 그래서 따로 EC2 내의 .env 파일에 vi로 mongoDB password 내용을 추가해주니 해결되었다.
출처
https://duckgugong.tistory.com/159
https://duckgugong.tistory.com/158
https://it-creamstory.tistory.com/entry/MongoDB-Atlas-%ED%8F%89%EC%83%9D-%EB%AC%B4%EB%A3%8C%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0