
startup.bat 파일은 Apache Tomcat을 실행하는 데 사용되는 배치 파일입니다. Tomcat서버를 시작하기 위해 필요한 환경을 설정하고 Java 프로세스를 실행하는 역할을 한다. 일반적으로 Window 환경에서는 이 파일을 사용하여 Tomcat을 시작하고 실행한다.
유닉스 기반 맥, 리눅스는 statup.sh 파일을 이용해서 시작하겠죠.
우선 startup.bat파일은 이와 같이 생겼다.

요약
아래 정리 처럼 코드 벼로 정리해도 좋지만 전체적으로 흐름이나 어떤 코드를 의미하는지만 분석해도 좋다.
누군가에게 설명할 땐 이렇게 설명할 것 같다.
이중 메인 명령은 가장 밑 call 부분이다. startup.bat인 만큼 위쪽에서
'해당 폴더에 파일이 있는지 확인하고 있다면 다음으로 넘어가',
'파일이나 폴더가 없다면 중지'
문제가 없다면 중지되지 않을 것이고 문제없이 카탈리나가 실행되게 될 것이다.
아마 catalina.bat/. sh shutdown.bat/. sh 도 방식은 비슷할 것이다.
분석
환경 설정 검사
- 조건을 통해 필요한 환경 변수를 설정하고 환경 설정이 올바른지 확인
- 예시로, CATALINA_HOME이나 CATALINA_BASE 경로 설정 확인
클래스 패스 설정
- Tomcat 실행에 필요한 클래스패스를 구성
실행 옵션 설정
- 보안 설정, 디버그 모드 설정 등 다양한 실행 옵션을 설정
명령어 실행
- 설정한 옵션과 함께 Java를 실행하여 Tomcat을 시작한다.
- 해당 명령어에 따라 보안 관련 옵션이나 디버그 모드를 설정하여 실행한다.
종료
- Tomcat이 정상적으로 실행되면 마지막에는 중단되지 않고 계속 실행된다. 종료 조건에 따라 중지됩니다.
상세분석
코드를 나름대로 해석해 보겠습니다.
@echo off
배치 파일이 실행될 때 화면에 명령어를 출력하지 않도록 설정한다.
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements. See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License. You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.
ASF(아파치 소프트웨어 재단)에 의해 라이선스가 부여된 내용을 설명.
rem ---------------------------------------------------------------------------
rem Start script for the CATALINA Server
rem ---------------------------------------------------------------------------
Tomcat 서버 시작하는 스크립트임을 설명하는 주석
setlocal
지역 변수를 설정한다. 이 스크립트에서 설정한 변수들은 스크립트 실해이 종료되면 사라진다.
rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
CATALINA_HOME이 정의되지 않은 경우 현재 디렉토리를 CATALINA_HOME으로 추측한다.
if not "%CATALINA_HOME%" == "" goto gotHome
만약 CATALINA_HOME이 비어 있지 않다면 gotHome으로 이동
set "CATALINA_HOME=%CURRENT_DIR%"
CATALINA_HOME현재 디렉토리로 설정합니다.
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
CATALINA_HOME 디렉토리에 catalina.bat 파일이 존재하는지 확인한다.
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
상위 디렉토리로 이동하고, 그곳을 CATALINA_HOME으로 설정한다.
:gotHome
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
CATALINA_HOME디렉토리에 catalina.bat 파일이 존재하는지 다시 확인한다.
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
만약 CATALINA_HOME이 정의되지 않았다면, 이 환경 변수가 필요하다는 메시지를 출력하고 스크립트를 종료
:okHome
okHome으로 이동
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
EXECUTABLE변수에 catalina.bat 파일의 경로를 설정한다.
rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec
EXECUTABLE파일이 존재하는지 확인한다.
echo Cannot find "%EXECUTABLE%"
echo This file is needed to run this program
goto end
만약 EXECUTABLE 파일이 존재하지 않는다면, 이 파일이 필요하다는 메시지를 출력하고 스크립트를 종료한다.
:okExec
okExec로 이동
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs
실행되지 않은 명령행 인수를 가져와서 CMD_LINE_ARGS 변수에 저장한다.
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
EXCUTABLE 파일을 호출하여 Tomcat서버를 시작한다.
:end
스크립트의 끝을 나타내는 레이블
'Back End > 백엔드 (Back-End) 서버 (server)' 카테고리의 다른 글
| tomcat work디렉토리 catalina와 컴파일 테스트 (/work/Catalina/localhost) 디렉터리 Catalina 폴더 생기는 이유 (27) | 2024.03.01 |
|---|---|
| Window에서 VirtualBox Linux 설치 Rocky배포판 : image checksum error 해결 (21) | 2024.02.28 |
| 톰캣 vs WAS: WAS종류 및 차이점과 선택과 기능 분석 (33) | 2024.02.28 |
| 윈도우 환경에서 여러 개의 톰캣 설치하는 방법 : 톰캣 두개, 서비스 이름, 포트 변경, 서비스 관리 (4) | 2024.02.28 |
| VirtualBox NAT 네트워크 설정하고 포트포워딩 하기 : 가이드 (Putty연결) (0) | 2024.02.27 |