ubuntu 태그의 최신글

서버

블로그 백엔드 서버 구축 및 보안 설정

서버 세팅 개요 서버 제공자: Vultr (Ubuntu 24.04) 서비스 목적: 개인 블로그 백엔드 API 주요 기술 스택: Java 17, Spring Boot 3, MySQL 8 초기 세팅 과정 Java 설치 MySQL 8 설치 및 설정 유저 생성 및 권한 설정 mysqld.cof 설정 수정 지정 포트 열기 위해 설정 Spring Boot JAR 실행 테스트 기본 실행 실행 오류 (JDBC 연결 안됨) 원인: 원인: Public Key Retrieval is not allowed 해결: application.yml에 allowPublicKeyRetrieval=true 추가 환경 변수 실행 nohup으로 백그라운드 실행 문제 해결 히스토리 ❌ JDBC 연결 안됨 문제 처음엔 Connection refused, 나중엔 Public Key Retrieval is not allowed 원인 MySQL 포트 바인딩 이슈 (bind-address 확인 필요) 환경 변수 미반영으로 yml에 ${} 인식 안됨 MySQL의 cachingsha2password로 인해 Public Key Retrieval 문제 발생 해결 JDBC URL에 allowPublicKeyRetrieval=true 추가 application.yml에서 .env 없이 테스트할 땐 민감정보 직접 기입 ❌ 서버는 켜졌지만 웹에서 접속 안됨 원인 ufw 설정에서 포트가 막혀 있었음 서버는 IPv6 기준으로 열려 있었지만 IPv4에서는 닫힘 상태 해결 sudo ufw allow 8080 sudo ufw allow [mysql 포트번호] lsof, netstat, ps aux | grep java로 상태 확인 필수 ❌ DBeaver 연결 안됨 원인 bind-address 문제 또는 유저 권한 미부여 해결 %로 열어주고, 포트 확인 (3340) 외부 IP에서 DBeaver 접근 허용 (방화벽 ufw + MySQL 설정) ❌ 캐시 문제로 연결 실패 문제 application.yml 수정 후에도 연결 안됨 원인 환경 변수 재적용 안됨, 이전 캐시 남아 있음 해결 회고 단순히 Spring Boot 실행만 하면 되는 줄 알았는데, DB 연결과 보안 설정에서 예상보다 훨씬 많은 문제가 발생했다. 특히 .env가 인식되지 않거나, JDBC URL 파라미터 문제(allowPublicKeyRetrieval)는 삽질이 반복된 부분이었다. ufw 설정이 단방향이라는 점, IPv6/IPv4 분리된 포트 허용 설정 등은 서버 보안에 대한 새로운 인사이트였다. 지금은 정상 작동하지만, 운영 단계로 가기 위해선 logrotate, 백업 전략, 모니터링 도구 등의 추가 세팅이 필요할 것이다.

2025년 04월 24일 10:46