외부에서 로컬 환경에 접근할 수 있도록 만들기 (1. Tomcat으로 수동 배포)

외부에서 로컬 환경에 접근할 수 있도록 만들기 위한 단계
  1. Tomcat으로 수동 배포를 한다.

  2. ngrok을 사용해 터너링으로 서버를 실행한다.


Tomcat을 사용한 수동 배포

WAR를 사용하는 이유?

JAR는 자바 프로젝트를 압축한 파일로 JRE만 있어도 실행이 가능하다.

반면에 WAR는 웹 관련 자료를 포함하여 웹 어플리케이션을 압축한 파일이다.

별도의 웹 서버가 필요하고, JAR보다 더 넓은 범위를 압축할 수 있다.

따라서, WAR로 패키징하면 다양한 설정과 웹 환경을 구성할 수 있는 장점이 있다.


사전 설치

1. JRE 설치 (Windows)

jre

다운로드 링크에서 JRE를 설치

2. 환경변수 설정 (Windows)
변수 이름 : JRE_HOME
변수 값 : C:\Program Files\Zulu\zulu-11-jre
3. 톰캣 설치

tomcat

JDK 11 버전을 사용하는 경우 9 버전과 호환성이 가장 좋기 때문에

Tomcat 9 버전을 설치한다.

  • Mac 유저는 tar.gz / Windows 유저는 .zip 파일을 다운로드 한다.

  • 해당 디렉토리 안에서 실행, 종료를 하기 때문에 편한 경로에서 압축 해제를 한다.


서버 실행 및 종료 명령어

Windows 유저(cmd)
# 톰캣 실행
$ apache-tomcat-9.0.68/bin> .\startup.bat

# 톰캣 종료
$ apache-tomcat-9.0.68/bin> .\shutdown.bat
Mac 유저
# 톰캣 실행
$ apache-tomcat-9.0.68/bin> .\startup.bat

# 톰캣 종료
$ apache-tomcat-9.0.68/bin> .\shutdown.bat

실행 시 보이는 화면

apa

톰캣 기본 실행 포트: 8080번

톰캣을 실행 명령어를 입력한 후 localhost:8080 혹은 127.0.0.1:8080 으로 접속하면 다음 화면이 나옵니다.


톰캣으로 웹 애플리케이션 실행

JAR -> WAR 포맷 변경

1. build.gradle 수정
plugins {
    id 'org.springframework.boot' version '2.4.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'war' 		// 추가
    id 'java'
}
2. [project]Application 파일 수정
@SpringBootApplication
// SpringBootServletInitializer를 상속
public class sampleApplication extends SpringBootServletInitializer { 

    public static void main(String[] args) {
        SpringApplication.run(sampleApplication.class, args);
    }

    // config를 Override함
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
        return builder.sources(sampleApplication.class);
    }
}
3. build

프로젝트 최상위 폴더에서 ./gradlew build 명령어를 입력해서 프로젝트를 빌드한다.

[프로젝트 최상위 폴더]/build/libs 경로에 있는 .war파일을

[apache-tomcat-9.0.68]/webapps 경로로 옮긴다.
  • .war 파일의 이름이 ROOT인 경우 별도 설정이 필요없지만, 다른 이름인 경우 추가 설정이 필요하다

server.xml 파일 수정

파일 경로: conf> server.xml

...
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Context path="/" docBase="[개인의 프로젝트명]"  reloadable="false" > </Context>
        
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
...
  • Host 내부에 Context 설정을 추가

톰캣을 종료 후 재시작을 하면, .war 파일을 압축해제하여 webapps에 동일한 이름의 디렉토리가 구성된다.


톰캣 실행 후 확인

success

http://localhost:8080 에 접속하면 .war 파일이 실행되고 있음을 확인할 수 있다.