졸프 업로드,,,오랜만이어요 그동안 뭔가 개발했는데 진짜 너무 바빠서 블로그 올릴 생각도 안들었슈... 왜냐면 개발보고하는 날이 가까워져서 그냥 어떻게든 개발을 했어야했음
현 API 상황


다른 수업들이랑 병행하기 힘들다....난 개발을 방학때 하는 줄 알았어 (본전생 애들도 개발은 방학때 함 근데 왜 복전생 반을 이렇게 빡세게 시키시나요?)
근데 뭐 어떡해 해야지. 정신차리자.
자, 오늘은 백엔, 프엔, ML을 다같이 연동하기 위한 서버를 구축해보겠음. 스따또
우선 전체적인 진행상황
chmod 400 your-key.pem
ssh -i "qnb-server-key.pem" ubuntu@<EC2 퍼블릭 IP>
이렇게 해당 서버에 접속!
sudo yum install java-17-amazon-corretto -y # Amazon Linux
# 또는
sudo apt install openjdk-17-jdk -y # Ubuntu
java -version
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
node -v
npm -v
sudo yum install python3 -y
sudo yum install python3-pip -y
python3 --version
pip3 --version
이렇게 진행하고 각 레포지에 있는 파일들을 clone하려고 했는데 토큰 문제가 생겨서 403 오류가 났다. (밑 코드)
remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/q-n-b/BackEnd.git/': The requested URL returned error: 403
403 오류는 깃허브에 로그인되었지만 해당 레포지에 접근할 권한이 없다는 것!
내가 알고보니 깃허브의 토큰을 만들고 EC2 서버에 로그인하는 과정에서 classic 토큰을 받아어야했는데 fine-grained 토큰을 받은 것....그래서 이후 수정하고 클론해올 수 있었다!
나의 경우 다른 친구의 계정 조직에 레포지토리를 가져오는 것이었기 때문에 각 레포지토리의 coordinators에 나를 추가하고 가져올 수 있었다.
cd Backend
./gradlew build # 또는 mvn package
java -jar build/libs/*.jar
기본적으로 8080 포트에서 실행됨 → http://:8080 접속 가능
cd Frontend
npm install
npm start
기본 3000 포트 → http://:3000
cd ML
python3 app.py
Flask에서 host='0.0.0.0' 설정 필요 → http://:5000
이 부분에서 이제 어떻게 하는거지? 싶었는데 이제 각자 개발은 로컬 컴퓨터 작업 -> 것허브 push -> 서버에서 pull 하는 방식으로 테스트 해보기로 했다!
이 부분부턴 아직이지만 나중에 진행하게 된다면 따로 포스트를 작성하겠음! 그냥 가볍게만 봐놓는걸로!
QnB-Backend-0.0.1-SNAPSHOT.jar 파일을 SCP로 EC2에 복사:
scp -i your-key.pem QnB-Backend.jar ec2-user@your-public-ip:/home/ec2-user/
java -jar QnB-Backend.jar
-> application.yml에서 DB 등 설정이 EC2 내에서 작동하도록 확인 필요
git clone your-frontend-repo.git
cd frontend
npm install
npm run build
build/ 폴더를 Nginx 등의 웹서버로 서빙하거나,serve 모듈로 실행:
npm install -g serve
serve -s build -l 3000
pip3 install flask
# app.py 예시
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/predict", methods=["POST"])
def predict():
data = request.json
# 예측 로직
return jsonify({"result": "ok"})
app.run(host="0.0.0.0", port=5000)
tail -f로 실시간 확인 가능