728x90
CentOS 7에서 Apache Tomcat(apache-tomcat)를 설치하고 인스턴스를 자동으로 구성하는 방법
사전 준비
Java 설치 확인
java -version
openjdk version "17.0.6"
또는 Azul JDK 사용 시
/usr/local/java/bin/java -version
Tomcat 설치 스크립트 작성
다운로드 경로
- https://downloads.apache.org/tomcat/tomcat-10/v10.1.7/bin/

script.sh 생성
vim script.sh
#!/bin/bash
# root 계정 확인
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run as root."
exit 1
fi
# 변수 설정
tomcat_home="/apps/tomcat"
tomcat_version="10.1.7"
# tomcat 계정 생성
if ! id -u tomcat >/dev/null 2>&1; then
useradd --system --shell /bin/false --home-dir "${tomcat_home}" tomcat
fi
# 다운로드 URL
tomcat_url="https://downloads.apache.org/tomcat/tomcat-10/v${tomcat_version}/bin/apache-tomcat-${tomcat_version}.tar.gz"
tomcat_file="apache-tomcat-${tomcat_version}.tar.gz"
# 설치 디렉토리
initial_tomcat="${tomcat_home}/apache-tomcat-${tomcat_version}"
mkdir -p ${initial_tomcat}
# 다운로드
wget -q "${tomcat_url}" -P /tmp/
# 압축 해제
tar -xzf "/tmp/${tomcat_file}" -C "${initial_tomcat}" --strip-components=1
# 인스턴스 생성
cp -r "${initial_tomcat}" "${tomcat_home}/instance1"
# 포트 변경
cp "${tomcat_home}/instance1/conf/server.xml" \
"${tomcat_home}/instance1/conf/server.xml.bak"
sed -i 's/8080/8081/g' "${tomcat_home}/instance1/conf/server.xml"
# 테스트 JSP 생성
mkdir -p "${tomcat_home}/instance1/webapps/ROOT"
cat <<'EOF' > "${tomcat_home}/instance1/webapps/ROOT/test.jsp"
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<html>
<head><title>Tomcat Test</title></head>
<body>
<h1>Tomcat 정상 동작</h1>
<p>현재 시간 : <%= new java.util.Date() %></p>
<p>세션 ID : <%= session.getId() %></p>
<p>서버명 : <%= request.getServerName() %></p>
<p>클라이언트 IP : <%= request.getRemoteAddr() %></p>
</body>
</html>
EOF
# 권한 설정
chown -R tomcat:tomcat "${tomcat_home}"
chmod +x "${tomcat_home}/instance1/bin/"*.sh
# 버전 확인
"${tomcat_home}/instance1/bin/version.sh"
# 정리
rm -f /tmp/${tomcat_file}
echo "Install Complete"
systemd 서비스 등록
더보기
---
Tomcat 서비스 등록하는 스크립트
vim tomcat-service.sh
#!/bin/bash
tomcat_home="/apps/tomcat/instance1"
cat <<EOF > /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 10
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/local/java
Environment=CATALINA_PID=${tomcat_home}/temp/tomcat.pid
Environment=CATALINA_HOME=${tomcat_home}
Environment=CATALINA_BASE=${tomcat_home}
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server'
ExecStart=${tomcat_home}/bin/startup.sh
ExecStop=${tomcat_home}/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable tomcat
systemctl start tomcat
실행 권한 부여
chmod +x tomcat-service.sh
서비스 등록 실행
bash tomcat-service.sh
서비스 상태 확인
systemctl status tomcat
---
실행 권한 부여
chmod +x script.sh
설치 실행
bash script.sh
$ bash script.sh
Creating Tomcat user...
Downloading and extracting Tomcat 10.1.7...
Creating a Tomcat instance...
Configuring Tomcat instance...
Setting Tomcat permissions...
Verifying Tomcat installation...
Using CATALINA_BASE: /apps/tomcat/instance1
Using CATALINA_HOME: /apps/tomcat/instance1
Using CATALINA_TMPDIR: /apps/tomcat/instance1/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /apps/tomcat/instance1/bin/bootstrap.jar:/apps/tomcat/instance1/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/10.1.7
Server built: Feb 27 2023 20:25:27 UTC
Server number: 10.1.7.0
OS Name: Linux
OS Version: 3.10.0-1160.76.1.el7.x86_64
Architecture: amd64
JVM Version: 17.0.6+10-LTS
JVM Vendor: Azul Systems, Inc.
Tomcat starting...
/apps/tomcat/instance1/bin/startup.sh
tomcat 인스턴스 실행(startup.sh)
$ /apps/tomcat/instance1/bin/startup.sh
Using CATALINA_BASE: /apps/tomcat/instance1
Using CATALINA_HOME: /apps/tomcat/instance1
Using CATALINA_TMPDIR: /apps/tomcat/instance1/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /apps/tomcat/instance1/bin/bootstrap.jar:/apps/tomcat/instance1/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
프로세스 확인
$ ps -ef | grep -v grep | grep tomcat
root 9612 1 15 14:01 pts/2 00:00:09 /usr/local/java/bin/java -Djava.util.logging.config.file=/apps/tomcat/instance1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -classpath /apps/tomcat/instance1/bin/bootstrap.jar:/apps/tomcat/instance1/bin/tomcat-juli.jar -Dcatalina.base=/apps/tomcat/instance1 -Dcatalina.home=/apps/tomcat/instance1 -Djava.io.tmpdir=/apps/tomcat/instance1/temp org.apache.catalina.startup.Bootstrap start
포트 확인
$ netstat -nlpt | grep java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 9612/java
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 9612/java
웹 브라우저 테스트
http://tomcat_server_ip:8081/test.jsp

728x90
'리눅스' 카테고리의 다른 글
| [WIP] 우분투에서 PCP를 설치하는 방법 (0) | 2026.04.22 |
|---|---|
| [WIP] 리눅스에서 파일 시스템 복구하기 (0) | 2026.04.22 |
| [WIP] Docker Compose로 Sonatype Nexus Repository 3를 설치 및 실행하는 방법 (0) | 2026.04.18 |
| [WIP] 파이썬 가상 환경을 구성하고 설정하는 방법 (0) | 2026.04.14 |
| [WIP] PHP 슈퍼 글로벌 변수 (0) | 2026.04.14 |