맨땅에 코딩

RE:BORN Backend - AI 서버(Flask) AWS 배포(EC2, Ubuntu) 본문

KAU 2024 (3학년)/산학프로젝트

RE:BORN Backend - AI 서버(Flask) AWS 배포(EC2, Ubuntu)

나는 푸딩 2024. 5. 22. 12:40

안녕하세요 산학프로젝트 개발 이슈를 적으러 왔습니다.

저는 어제 밤을 새고 재정신 없는 와중에 산학을 하고 있었는데요(종강 내놔),
제가 방금 AI 서버 배포에 성공한 나머지 정말 정말 정말 정말 정말 좋아 죽겠는 나머지

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

무슨 이슈가 있었고, 어떤 방법으로 해결하였는지 당장 적으러 왔습니다.

 

먼저, 저는 심리상담소를 안내하고 애플리케이션의 기능을 설명하는 챗봇을

Python, JupyterNotebook으로 개발하였습니다.

 

AI 서버를 구축하고 배포를 하기위해 Flask를 사용하였고,(처음 써봤는데 언어가 Python이라 굿입니다)

Selenium은 나중에 또 다른 이슈에서 더 자세하게 설명하겠지만,

정확한 심리상담소를 안내하도록 구현하기 위해 사용하였습니다.

 

Local에서 서버와 클라이언트가 응답 및 요청을 제대로 하는 것을 확인한 후, AWS EC2로 배포를 시도하였습니다.

 

일단 AWS EC2에서 인스턴스 생성 시, Ubuntu(프리티어), 5000번 포트 열고 Ubuntu 환경에 접속해서 다음과 같은

faiss-cpu==1.8.0
Flask==3.0.3
langchain==0.1.12
langchain-community==0.0.34
langchain-core==0.1.46
langchain-openai==0.0.5
langchain-text-splitters==0.0.1
requests==2.31.0
selenium==4.18.1
beautifulsoup4==4.12.3

 

라이브러리들을 순차적으로 설치해주었습니다.

 

다만, selenium 환경을 설치하는 것이 다소(가 아니라 겁나 매우) 어려웠는데요,

지금부터 차근 차근 단계별로 나아가봅시다.

 

일단 최신 버전의 크롬을 가져와야합니다. 왜냐면 제가 webdriver를 사용해주었기 때문이죠..(몰라요 구글이 그렇대요)

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb

 

그리고 설치된 구글 버전을 확인해주세요!

google-chrome-stable -version

 

구글 버전에 맞는 웹드라이버를 찾아 설치해주세요!

저의 경우, 125버전이었기 때문에 다음과 같은 명령어를 실행하였습니다.

wget -N https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.76/linux64/chromedriver-linux64.zip
unzip chromedriver_linux64.zip

 

마지막으로 selenium을 설치합니다.

pip install selenium

 

드디어 selenium 설치가 완료되었습니다!

 

그럼 이제 다음과 같은 명령어를 실행하여 flask 서버가 퍼블릭 주소로 잘 열리는지 확인해 봅시다.

flask run --host=0.0.0.0

 

제가 1차적으로 새벽 늦게까지 배포를 실패한 이유 host=0.0.0.0을 주지 않았기 때문이었습니다...

이 글을 읽고 있는 여러분은 생쇼하지마시고 host=0.0.0.0을 꼭 작성해주세요...

 

다음으로는 창을 닫더라도 서버가 백그라운드에서 계속 실행될 수 있도록 다음과 같은 명령어를 사용합니다.

nohup flask run --host=0.0.0.0 &

 

자 여기서 또 다른 이슈 일단 저는 바보임니다 ^_ㅠ

제가 selenium을 쓰지 않고 개발을 진행했던 파일을 배포할 때는 잘 되다가

selenium을 쓰기 시작하니까 배포가 안되는겁니다...

그래서 매우 절망적으로 selenium 때문인가, nohup가 안 먹히는건가 싶어 생쇼를 했는데요,

알고보니 제가 배포해둔 서버를 닫기 무서워서 안 닫은 상태로 5000번 포트에서 또 다른 퍼블릭 주소로 열려고 하다보니 충돌이 나서 안되는거였습니다.

 

서버를 닫기 무서워도, 일단 5000번으로 열어두었던 인스턴스는 중지하고, 새롭게 배포를 시도한 다음 배포가 잘 이루어지면 인스턴스를 종료하는 것을 생활화합시다 ^_!

 

이상 바보였습니다(?)

감사합니다 :)

상담소를 안내해준 챗봇에게 감사드립니다..