개인 데스크톱에 웹 서버 배포기

Hyeok·2025년 5월 2일

개인 데스크톱에 배포 해본 팀 프로젝트 URL : ddangddang.store

(전기 요금은 별로 안 들거라고 생각해서 켜뒀었는데 미세하지만 열,소음 이슈로 나중에 클라우드로 배포하기로...)

1. 아키텍처 개요

Frontend: React 앱 → 빌드 후 dist/ 폴더
Backend: Spring Boot → 포트 8088에서 동작
Reverse Proxy: Nginx → 정적 파일 제공 + API 프록시

왜 Nginx?

리버스 프록시 설정이 간단하고, 정적 파일 서비스에 특화돼 있고, 실시간 트래픽 처리나 API 분산에도 강점 있음. Apache도 아직 많이 쓰지만 Nginx 점유율이 살짝 더 높고 앞으로도 많으 쓰일 분위기라 선택.

2. 공유기 구조 혼동

네트워크 구조를 내가 잘못 이해하고 있었다. 집에서는 SK GNT2400 모뎀 + 별도 공유기 조합으로 사용하고 있었는데 거실에 보이는 공유기만 있는 줄 알았고, 통신단자함 쪽에 모뎀이 존재하는 걸 몰랐음.
모뎀 관리자 페이지랑 공유기 관리자 페이지가 각각 다르다는 걸 뒤늦게 알았음.
그리고 모뎀이 라우터 역할도 하고 있다는것도 늦게 알았음.

3. MySQL RSA Key 오류

java.sql.SQLException: RSA public key is not available client side (option serverRsaPublicKeyFile not set)
useSSL=false로 우회하는 방법도 있었지만, 포트폴리오 용도여도 SSL 인증서 발급 해보는게 맞다고 생각됨.

4. SSL 인증서 툴 사용

SSL인증서 서비스 중에 무료이고 유명한 Let's Encrypt 사용하기로 결정했고, 사용하기 위해 Certbot툴을 이용하려고 했는데 윈도우 환경에서는 사용이 불가했다.
윈도우에서는 더 이상 공식적으로 지원 안한다고 공식 사이트에도 명시돼 있었고, GitHub 링크도 내려갔다.
찾아보니 베타 버전으로 사용했던 사람도 있는데 이것도 지금 시점에선 막혔음.

대안으로 Win-ACME 사용함. 실행파일 사용하면 명령어 없이 선택 + 몇가지 입력형식이라 사용하기 괜찮았다.

5. nginx 꺼지는 문제

Nginx 실행하자마자 꺼져버리는 문제 발생.
로그 파일 열어보니까 아래 메시지가 찍혀 있었다:

2025/05/01 XX:XX:XX [alert] XXXX#XXXX: the event "ngx_master_XXXX" was not signaled for 5s.
처음엔 이유를 몰랐는데, 스택오버플로우 보니 SSL 패스워드 파일 따로 만들어서 연결하면 된다는 얘기가 있었고 적용하니까 해결됨.

profile
공부하면서 정리한 블로그입니다. 혹시 잘못된 내용이 있다면 댓글로 알려주시면 큰 도움이 됩니다. 감사합니다!

0개의 댓글