본문 바로가기

리눅스

tomcat(apache-tomcat) 설치 스크립트

728x90
반응형

tomcat(apache-tomcat) 설치 스크립트

tomcat downloads url

- https://downloads.apache.org/tomcat/tomcat-10/v10.1.7/bin/

script.sh 파일 편집

vim script.sh
#!/bin/bash

# Check if running as root
if [ "$(id -u)" -ne 0 ]; then
    echo "This script must be run as root."
    exit 1
fi

# Set Tomcat home directory and version
tomcat_home="/apps/tomcat"
tomcat_version="10.1.7"

# Create Tomcat user
echo "Creating Tomcat user..."
if ! id -u tomcat >/dev/null 2>&1; then
    useradd --system --shell /bin/false --home-dir "${tomcat_home}" tomcat
fi

# Set Tomcat download URL and file name
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"

# Set initial Tomcat directory
initial_tomcat="${tomcat_home}/apache-tomcat-${tomcat_version}"
mkdir -p ${initial_tomcat}

# Download and extract Tomcat
echo "Downloading and extracting Tomcat ${tomcat_version}..."
wget -q "${tomcat_url}" -P /tmp/
tar -xzf "/tmp/${tomcat_file}" -C "${initial_tomcat}" --strip-components=1

# Create a Tomcat instance
echo "Creating a Tomcat instance..."
cp -r "${initial_tomcat}" "${tomcat_home}/instance1"

# Configure Tomcat instance
echo "Configuring Tomcat instance..."
cp "${initial_tomcat}/conf/server.xml" "${tomcat_home}/instance1/conf/server.xml.bk"
sed -i 's/8080/8081/g' "${tomcat_home}/instance1/conf/server.xml"

# Add a new web app (optional)
# if ! [ -d "${tomcat_home}/instance1/webapps/ROOT" ]; then
#     mkdir -p "${tomcat_home}/instance1/webapps/ROOT"
#     echo "<html><body><h1>New Web App</h1></body></html>" > "${tomcat_home}/instance1/webapps/ROOT/index.html"
# fi

if ! [ -f "${tomcat_home}/instance1/webapps/ROOT/test.jsp" ]; then
    cat <<'EOT' > "${tomcat_home}/instance1/webapps/ROOT/test.jsp"
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.lang.management.ManagementFactory" %>
<%@ page import="javax.management.MBeanServer" %>
<%@ page import="javax.management.ObjectName" %>
<%@ page import="org.apache.catalina.Server" %>
<%@ page import="org.apache.catalina.util.ServerInfo" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP Test Page</title>
</head>
<body>
    <h1>JSP Test Page</h1>
    <p>시간: <%= new java.util.Date() %></p>
    <p>서버 이름: <%= request.getLocalName() %></p>
    <p>서버 아이피: <%= request.getServerName() %></p>
    <p>클라이언트 아이피: <%= request.getRemoteAddr() %></p>
    <%
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    ObjectName name = new ObjectName("Catalina:type=Server");
    Server server = (Server) mbs.getAttribute(name, "managedResource");
    out.println("<p>인스턴스 정보: " + ServerInfo.getServerInfo() + "</p>");
    out.println("<p>인스턴스 디렉토리 경로: " + server.getCatalinaBase().getAbsolutePath() + "</p>");
    %>
    <p>인스턴스 세션 ID: <%= session.getId() %></p>
</body>
</html>
EOT
fi

# Set Tomcat permissions
echo "Setting Tomcat permissions..."
chown -R tomcat: "${tomcat_home}/instance1"
chmod +x "${tomcat_home}/instance1/bin/"*.sh

# Verify Tomcat installation
echo "Verifying Tomcat installation..."
"${tomcat_home}/instance1/bin/version.sh"

# Clean up downloaded files
rm -f /tmp/${tomcat_file}

echo "Tomcat starting..."
echo "${tomcat_home}/instance1/bin/startup.sh"

 

Tomcat 서비스 파일 생성

더보기

Tomcat 서비스 등록하는 스크립트

vim tomcat-service.sh
#!/bin/bash

# Create Tomcat service file
echo "Creating Tomcat service file..."
cat << EOF > /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat 9
After=syslog.target 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 -XX:+UseParallelGC'

ExecStart=${tomcat_home}/bin/startup.sh
ExecStop=${tomcat_home}/bin/shutdown.sh

Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# Reload system services
echo "Reloading system services..."
systemctl daemon-reload

# Enable Tomcat service
echo "Enabling Tomcat service..."
systemctl enable tomcat

# Start Tomcat service
echo "Starting Tomcat service..."
systemctl start tomcat
chmod +x tomcat-service.sh

 

script.sh 실행 권한 설정

chmod +x script.sh

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
반응형