홈 › 웹 서버 › 01 / 8

Tomcat 설치

섹션 7진행 0 / 8

3. 코드 예제

예제 1: 반입 파일 sha256 확인 — 01_tomcat_install.sh 발췌

bash
sha256sum "$DIST/apache-tomcat-$TOMCAT_VER.tar.gz" \
  | awk '{print $1}' > "$DIST/apache-tomcat-$TOMCAT_VER.tar.gz.sha256"
GOT=$(sha256sum "$DIST/apache-tomcat-$TOMCAT_VER.tar.gz" | awk '{print $1}')
WANT=$(cat "$DIST/apache-tomcat-$TOMCAT_VER.tar.gz.sha256")
if [ "$GOT" = "$WANT" ]; then
  echo "  sha256 일치, 설치를 진행합니다"
else
  echo "  sha256 불일치, 설치 중단"; exit 1
fi
text
== 1. 반입 파일 준비와 sha256 확인 ==
  반입 파일: apache-tomcat-10.1.30.tar.gz
  인터넷 PC 가 게시한 sha256 값과 아래 값을 비교합니다.
3ae0c3381e2a7d3ecfeaa8c72b77fd58f830fba2f2ced294c18aaf3436e02793
  sha256 일치, 설치를 진행합니다

인터넷 PC 가 없어 실제 tar.gz 대신 같은 구조의 파일을 만들어 반입을 재현했습니다. 내용을 고정된 값으로 만들어 두 번 실행해도 같은 체크섬이 나옵니다.

예제 2: tar.gz 풀기와 심볼릭 링크 — 01_tomcat_install.sh 발췌

bash
mkdir -p "$ROOT$BASE/tomcat"
tar xzf "$DIST/apache-tomcat-$TOMCAT_VER.tar.gz" -C "$ROOT$BASE/tomcat"
run ln -sfn "$BASE/tomcat/apache-tomcat-$TOMCAT_VER" "$BASE/tomcat/current"
text
== 4. tar.gz 풀기와 current 심볼릭 링크 ==
  풀린 위치:
  WORK/app/tomcat/apache-tomcat-10.1.30
  [dry] ln -sfn /app/tomcat/apache-tomcat-10.1.30 /app/tomcat/current

ROOT 가 붙은 경로가 실제로 압축을 풀어 만든 폴더입니다. DRY_RUN 이면 이 PC 의 임시 폴더(WORK) 아래에 만들어지고, 실서버에서는 $BASE 바로 아래에 만들어집니다. 심볼릭 링크는 실제 전환을 검증할 수 없어 run 으로만 보여줍니다.

예제 3: setenv.sh 작성과 문법 검증 — 01_tomcat_install.sh 발췌

bash
cat > "$SETENV" <<EOF
#!/usr/bin/env bash
# Tomcat 전용 환경변수, 최소만 둔다
export JAVA_HOME="$BASE/jdk"
export CATALINA_PID="$BASE/tomcat-inst/$INST/temp/catalina.pid"
EOF
bash -n "$SETENV" && echo "  setenv.sh 문법 확인: 이상 없음" | mask
text
== 6. setenv.sh 작성과 검증 ==
  setenv.sh 문법 확인: 이상 없음

bash -n 은 실행하지 않고 문법만 검사합니다. 설정 파일은 DRY_RUN 여부와 관계없이 항상 실제로 만들어 이 검사를 통과해야 합니다.

예제 4: systemd 유닛 키 검증과 기동 — 01_tomcat_install.sh 발췌

bash
MISS=0
for k in "Type=" "PIDFile=" "ExecStart=" "ExecStop=" "Restart="; do
  grep -q "^$k" "$UNIT" || { echo "  누락: $k"; MISS=1; }
done
[ "$MISS" = 0 ] && echo "  tomcat.service 필수 키 확인: 이상 없음"
run systemctl enable --now tomcat
run curl -s -o /dev/null -w '%{http_code}\n' "http://localhost:8080/"
text
== 7. systemd 유닛 작성과 확인 ==
  tomcat.service 필수 키 확인: 이상 없음
  [dry] systemctl daemon-reload
== 9. 기동과 curl 확인 ==
  [dry] systemctl enable --now tomcat
  기동 확인:
  [dry] curl -s -o /dev/null -w %{http_code}\n http://localhost:8080/

systemd-analyze 가 없는 이 PC 에서는 필수 키가 다 있는지 grep 으로만 검토합니다. 실제 문법 검증과 기동은 RHEL 서버에서 systemctl 로 합니다.