본문 바로가기
[SpringBoot]

[Kotlin + Spring] 1. 새 프로젝트 시작 (NginX 연동까지)

by Hevton 2024. 3. 27.
반응형

코프링으로 프로젝트를 만들어본지 꽤나 오래, 1년이나 되었습니다.

이번에 우아한테크코스에서 안드로이드 코틀린 과정을 진행하면서, 코틀린에 대해서도 알아가고 있습니다.

그리고 개인적으로 준비하고 있는 서비스의 백엔드를 코프링으로 계획중이었기에, 코프링의 기본을 복습하며 쓰는 강의글입니다.

(제가 나중에 까먹으면 보려고)


 

IntelliJ Ultimate 버전이 아니면 자체적으로 Spring 프로젝트를 만들기 까다로우므로 

Spring initializr 사이트를 이용하겠습니다.

 

https://start.spring.io/ 에서 다음과 같이 만들어줍니다.

 

자바 버전은 17로 했고, Gradle Maven 중에 Gradle 을 선택,

Groovy 대신 Kotlin을 통해 Kotlin DSL에 대한 마이그레이션 공부도 진행합니다.

참고로 Gradle이 Maven보다 최신 버전이라고 간단히 생각하시면 됩니다.

 

이대로 Generate를 진행해서 IntelliJ로 열어줍니다.

 

그럼 예전에 생성한 프로젝트의 gradle과 다르게 kts의 확장자가 보입니다. 재밌어요.

spring initializr 를 사용하여 프로젝트를 생성하면 좋은 점은, 그냥 실행만 시키면 된다는 것입니다.

 

 

참고로 spring data jpa를 import 해놓은 상황이라, 초기화를 진행하지 않으면 서버가 켜지지 않을 수 있으니

임시로 주석해놓고 실행하면 서버 잘 돌아갑니다.

 

 

SpringBoot 기본 내장 WAS인 톰캣의 기본 포트는 8080이므로

127.0.0.1:8080을 입력하시면 성공적으로 서버가 돌아가는 것을 확인할 수 있습니다.

 

저는 여기서 Web Server인 NginX를 연결해주겠습니다.

Web Server는 정적인 데이터를, WAS 는 동적인 데이터를 다룹니다.

SpringBoot 자체만으로도 WAS로 인해 서버를 실행할 수 있지만, 추후 무중단 배포나 로드밸런싱, 리버스 프록시를 위해 NginX를 달아주면 좋습니다.

 

 

 

MAC 기준으로 설명하겠습니다.

brew를 이용해서 nginx를 다운받습니다.

brew install nginx

 

 

다음 명령어는 nginx를 실행합니다.

brew services start nginx

 

 

다음 명령어는 nginx를 재실행합니다.

brew services restart nginx

 

 

다음 명령어는 nginx를 중단합니다.

brew services stop nginx

 

 

mac에서 brew로 설치한 nginx의 기본 입력 포트는 8080입니다.

 

따라서 127.0.0.1:8080으로 입력하면 이번엔 nginx의 실행 창으로 이동됩니다.

localhost:8080도 똑같습니다.

 

그럼 이제부터, 80이라는 포트로 nginx가 listen하고,

80 포트의 nginx를 통해, 8080 포트인 springboot 서버로 포워딩해주겠습니다.

 

NginX 설정 변경

vi /usr/local/etc/nginx/nginx.conf

 

 

아래처럼 8080으로 되어 있는 포트를

 

80으로 바꿔줍니다.

 

또한 SpringBoot와 연동할 것이라면, location / { } 부분을 아래와 같이 추가해주면 됩니다.

        location / {
            root   html;
            index  index.html index.htm;
            # NginX에 요청이 오면 해당 요청을 localhost:8080으로 전달하겠다
            proxy_pass http://localhost:8080;
            # WAS서버는 클라이언트IP를 NignX IP로 알 수 있기에, 이를 방지
            # 실제 접속 IP
            proxy_set_header X-Real-IP $remote_addr;
            # 프록시 서버가 여러개일때의 주소 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 요청 필수 값 
            proxy_set_header Host $http_host;
        }

 

이렇게 하고 SpringBoot 서버를 켠 뒤에 NginX를 켜고, 

localhost:80 or 127.0.0.1:80 에 접속해봅시다.

아까와 같은 화면이 뜰거에요! 성공했다는 증거입니다.

이제 자야겠습니다. 내일도 글 써야지!

반응형