해결된 질문
작성
·
101
·
수정됨
0
만든파일을 배포하는 과정에 대해 질문이 있습니다.
배운기술들로 다른것을 만들어서 ngrok에 배포하는것이 아닌 다른방법으로 배포하고 싶습니다.
상황은 이렇습니다.
・2대의 데스크톱이있습니다.
・한대의 데스크톱이 서버의 역할을합니다.
・또다른 데스크톱은 클라이언트 역할을합니다.
vite와 node.js로 만든경우 vscode로 npm run dev하는것이 아닌 java에서 war파일을 만들어서 war파일만 교체하면되는것처럼 배포 가능한 하나의 번들형태로 만드는방법이 있나요?
아니면 vite와 node.js만의 배포하는방법이있나요?
제가 배포를 경험해본 방법이 java에서 Maven으로 war파일을 만들어서 tomcat에 넣어서 사용하는방법밖에 몰라서 node.js는 어떤방법으로 로컬데스크톱에서 실행하게 하는지 궁금합니다.
frontend폴더와 backend폴더가 따로 있는데 하나로 로컬데스크톱에 배포하는 방법이 있나요?
답변 1
0
안녕하세요, 질문 감사합니다!
Java WAR 배포 방식에 대해서는 깊게 알지 못하기에 만족하실만한 설명을 드릴 수 있을지 조심스럽습니다만, Node.js와 Vite 프로젝트를 배포하는 관점에서 말씀드리겠습니다.
일단 배포 방식은 크게 두 가지로 나눌 수 있습니다:
AWS, Heroku, Firebase Hosting, Vercel, Netlify, Railway 등과 같은 외부 서버(클라우드 플랫폼)에 소스코드를 올리고 실행하는 방식입니다.
이 방식은 인터넷만 연결되어 있으면 누구든 접속 가능하다는 장점이 있습니다.
하지만 별도 계정 생성, 빌드 파이프라인 구성, 유료 요금제 고려 등의 요소가 필요할 수 있습니다.
만약 클라우드 서버에 배포하시고 싶으시다면, 프론트엔드 React-Vite는 Firebase Hosting(무료)이 적합하고, 백엔드의 경우에는 Vercel이나 Netlify 같은 Node.js 서버를 배포할 수 있는 서비스를 추천드립니다. 각각 클라우드 서버만의 장단점이 있기 때문에 비교해보셔서 배포를 진행하시면 되겠습니다.
또한, 배포 후 커스텀 도메인을 구매해 연동하면 배포를 완전히 마무리할 수 있습니다.
지금 질문자님이 설정하신 방식입니다.
예: 데스크톱 A는 서버 역할, 데스크톱 B는 클라이언트 역할.
이 경우 서버로 사용될 데스크톱에서 애플리케이션을 실행해두고, 같은 네트워크(예: 집 공유기)를 사용하는 다른 컴퓨터에서 접근합니다.
이때는 로컬 IP 주소를 사용해 접근하게 됩니다. 예시: http://192.168.0.5:3000
그 후, 로컬 IP와 공인 IP 그리고 커스텀 도메인을 연동하려면, Nginx와 같은 리버스 프록시 서버를 사용해 트래픽을 적절히 분배하고 라우팅 설정을 해주는 것이 일반적입니다.
A. 강의에서는 Vite와 node.js 서버를 실행시킬 때 npm run dev
명렁어를 통해 실행 했었습니다. 배포 가능한 형태로 만드는 방법은
npm run build
cd frontend
npm run build
이 명령어를 실행하면, frontend/dist
폴더에 정적 파일(HTML, JS, CSS 등)이 생성됩니다.
이 폴더는 Java의 .war
처럼 서버에 올려서 실행만 하면 되는 결과물이라 보시면 됩니다.
// frontend/index.js
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'dist')));
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
});
app.listen(5173, () => {
console.log('Frontend running on http://localhost:5173');
});
생성된 index.js를 실행할 때 node index.js
만 실행하면 됩니다. 추가적으로 PM2를 통해 서버가 꺼지더라도 Node.js 앱을 자동으로 재시작해주는 프로세스를 사용하실 수도 있습니다.
마지막으로, 백엔드 코드는 별도로 수정/빌드할 필요 없이 nodemon
이나 pm2
로 서버를 실행한 후, 포트 번호만 공인 IP나 커스텀 도메인에 라우팅해주면 배포가 완료됩니다.
A. 질문자님께서 보유하고 계신 A 데스크톱과 B 데스크톱에 각각 프론트엔드와 백엔드를 나누어 배포하셔도 괜찮고, A 데스크톱에 프론트엔드와 백엔드를 함께 배포하셔도 무방합니다.
어차피 같은 통신사의 인터넷망을 통해 외부로 접속하게 되므로, 실제로 어느 컴퓨터를 사용하느냐는 큰 차이가 없습니다.
추가적으로 궁금한 점이 있으시면 언제든지 편하게 질문 주세요! 감사합니다.
회사 사이트 강의에서 진행했던 VS Code의 터미널은 윈도우의 CMD 창이나 리눅스의 터미널 창과 동일한 기능을 하며, 명령어를 입력해 프로그램을 실행하거나 파일을 관리할 수 있는 환경입니다. 따라서 VS Code 프로그램을 일부러 실행시킬 필요 없이, 윈도우의 CMD 창에서도 동일한 명령어를 입력하여 백엔드 Express 서버를 실행할 수 있습니다.
또한, 아래 링크에서 확인할 수 있듯이 Node.js와 Express로 만든 서버를 EXE 실행 파일로 제작하는 것도 가능하니 참고하시기 바랍니다:
https://www.google.com/search?q=How+to+make+a+executable+from+a+NodeJS%2BExpress+app
답변감사합니다.
프론트엔드부분은 이해가 되었습니다.
백엔드 즉 서버부분에 질문이있습니다
[서버로 사용될 데스크톱에서 애플리케이션을 실행]이라고 하셨는데 vscode를 사용하지않고 계속실행되게 하고싶습니다. 방법이 있을까요?
말씀하신 [서버로 사용될 데스크톱에서 애플리케이션을 실행]는 vscode로 실행시켜놓으라는말씀이신가요?