리눅스
tomcat(apache-tomcat) 설치 스크립트
코드버스
2023. 3. 31. 14:27
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
반응형