본문 바로가기
Deploy

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

by 2D3 2022. 10. 22.
728x90

외부에서 로컬 환경에 접근할 수 있도록 만들기 위한 단계

1. Tomcat으로 수동 배포를 한다.
2. ngrok을 사용해 터너링으로 서버를 실행한다.

 


 

WAR를 사용하는 이유?

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

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

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

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


사전 설치

 

1. JRE 설치 (Windows)

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

 

2. 환경변수 설정 (Windows)

변수 이름 : JRE_HOME
변수 값 : C:\Program Files\Zulu\zulu-11-jre

 

3. 톰캣 설치

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

실행 시 보이는 화면

톰캣 기본 실행 포트: 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에 동일한 이름의 디렉토리가 구성된다.


톰캣 실행 후 확인

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


728x90

댓글