System μž‘μ—…μ‹€/LINUX

[Ubuntu 20.04] Tomcat8 μ„€μΉ˜

μ£Όλ‹ˆμ“°πŸ§‘‍πŸ’» 2021. 1. 22. 01:19
728x90
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš”? μ£Όλ‹ˆν•˜λž‘ μž…λ‹ˆλ‹€.

μ˜€λŠ˜μ€ Synology NAS에 μ„€μΉ˜ν•œ Docker μ•ˆ Ubuntu 20.04에 Tomcat8λ₯Ό μ„€μΉ˜λ₯Ό ν•΄ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

Ubuntu에 κΈ°λ³Έ 섀정에 λŒ€ν•΄μ„œλŠ” '[Ubuntu 20.04] Apache2 μ„€μΉ˜' ν¬μŠ€νŒ… μ—΄μ–΄ 두도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

 

 

μ•„νŒŒμΉ˜ ν†°μΊ£ 7 λ”°λΌμž‘κΈ°

COUPANG

www.coupang.com

"이 ν¬μŠ€νŒ…μ€ 쿠팑 νŒŒνŠΈλ„ˆμŠ€ ν™œλ™μ˜ μΌν™˜μœΌλ‘œ, 이에 λ”°λ₯Έ μΌμ •μ•‘μ˜ 수수료λ₯Ό μ œκ³΅λ°›μŠ΅λ‹ˆλ‹€."

 

 


 

 

πŸ“Œ JDK μ„€μΉ˜


더보기

          πŸ‘‰ apt둜 μ§€μ •λœ Site(/etc/apt/source.list)에 openjdk-8이 μžˆλŠ”μ§€ κ²€μƒ‰ν•©λ‹ˆλ‹€.

 

          πŸ‘‰JDKκ°€ μžˆλŠ” 것을 확인 ν•˜μ˜€μœΌλ‹ˆ μ„€μΉ˜ ν•΄ 주도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

          πŸ‘‰ μ •μƒμ μœΌλ‘œ μ„€μΉ˜κ°€ μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

         

          πŸ‘‰μžλ°”κ°€ μ„€μΉ˜λœ μœ„μΉ˜λ₯Ό μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

          πŸ‘‰ μ‹¬λ³Όλ¦­ 링크λ₯Ό κ±Έμ–΄ 주도둝 ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

 

 

πŸ“Œ Tomcat8 μ„€μΉ˜


더보기

          πŸ‘‰ OS에 Apache2 νŒ¨ν‚€μ§€κ°€ 이미 μ„€μΉ˜λ˜μ—ˆλŠ”μ§€ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

         

          πŸ‘‰ λ§Œμ•½ μ„€μΉ˜κ°€ λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ Listing Line뒀에 아무것도 λ‚˜μ˜€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

μ£Όλ‹ˆν•˜λž‘μ˜ UbuntuλŠ” Tomcat이 μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‚˜ λ³΄λ„€μš”!

 

 

           πŸ‘‰ wgetλͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•΄μ„œ μ„€μΉ˜ ν•΄ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. (/usr 밑에 λ°›μ•„μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.)

 

 

 

 

         πŸ‘‰ λ‚΄λ €λ°›κΈ°κ°€ μ™„λ£Œλ˜λ©΄ 압좕을 ν•΄μ œν•˜μ—¬ μ£Όμ„Έμš”!

 

         πŸ‘‰ 심볼릭 링크λ₯Ό 걸어주도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

       

         πŸ‘‰ wgetλͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•΄μ„œ μ„€μΉ˜ ν•΄ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. (/usr 밑에 λ°›μ•„μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.)

         πŸ‘‰ 버전 확인을 톡해 μ •μƒμ μœΌλ‘œ μ„€μΉ˜λœ 것을 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

πŸ“Œ ν™˜κ²½λ³€μˆ˜ μ„€μ •


더보기

         πŸ‘‰ λ°©ν™”λ²½ μ˜€ν”ˆ

                  ufw allow 8080

 

 

         πŸ‘‰ ν™˜κ²½ λ³€μˆ˜ (etc/profile)

vim /etc/profile

 

         πŸ‘‰ μœ„와 같이 JAVA와 Tomcat ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬ μ€λ‹ˆλ‹€.

 

 

         πŸ‘‰ Tomcat 기동

         πŸ‘‰ tomcat이 μ„€μΉ˜λœ κ³³ bin λ””λ ‰ν„°λ¦¬μ—μ„œ ./startup.shλ₯Ό μ‚¬μš©ν•˜μ—¬ 기동 μ‹œμΌœ μ€λ‹ˆλ‹€.

 

         πŸ‘‰ Tomcat 정상 기동 λͺ¨μŠ΅

Host PC Web Browserμ—μ„œ 정상 접속 λͺ¨μŠ΅

πŸ’‘ μ§œμž”!

μ •μƒμ μœΌλ‘œ 기동이 μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

 

μ•„λž˜ λ‚΄μš©μ„ μ§„ν–‰ν•˜μ‹œκΈ° μ „ Tomcat을 μ’…λ£Œν•˜μ—¬ μ£Όμ„Έμš”.

root@localhost: ./shutdown.sh

 


πŸ“Œμ„œλΉ„μŠ€ 등둝

         πŸ‘‰ κ³„μ • 생성

 

         πŸ‘‰ μ„œλΉ„μŠ€ 등둝 (/etc/systemd/system에 tomcat.service μƒˆλ‘œ μž‘μ„±)

# Systemd unit file for tomcat 
[Unit] 
Description=Apache Tomcat Web Application Container 
After=syslog.target network.target 

[Service] Type=forking 

Environment="JAVA_HOME=/usr/lib/java" 
Environment="CATALINA_PID=/usr/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/usr/tomcat"
Environment="CATALINA_BASE=/usr/tomcat" 
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" 
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" 

ExecStart=/usr/tomcat/bin/startup.sh 
ExecStop=/usr/tomcat/bin/shutdown.sh 

User=tomcat 
Group=tomcat 
UMask=0007 
RestartSec=10 
Restart=always 

[Install] 
WantedBy=multi-user.target

         πŸ‘‰ μœ„μ™€ 같이 νŒŒμΌμ„ μž‘μ„±ν•˜μ—¬ μ£Όμ‹œκ³  μ €μž₯을 ν•˜μ‹  뒀에

root@localhost: systemctl daemon-reload

 

         πŸ‘‰ OS λΆ€νŒ…μ‹œ μžλ™μ‹œμž‘ 슀크립트

         πŸ‘‰ /etc/init.d 밑에 tomcat νŒŒμΌμ„ ν•˜λ‚˜ λ§Œλ“œμ‹  λ’€ κΆŒν•œμ„ 755둜 μ„€μ • ν•΄ μ€λ‹ˆλ‹€.

root@localhost: chmod 755 tomcat

#!/bin/sh 
#
# /etc/init.d/tomcat -- startup script for the Tomcat 8 servlet engine 
# 
# Modified init-Script from Ubuntu Tomcat init-script 
# 
# ### BEGIN INIT INFO # Provides: tomcat 
# Required-Start: $local_fs $remote_fs $network 
# Required-Stop: $local_fs $remote_fs $network 
# Should-Start: $named # Should-Stop: $named 
# Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 
# Short-Description: Start Tomcat. 
# Description: Start the Tomcat servlet engine. 
### END INIT INFO 
set -e 

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/tomcat 
NAME=tomcat 
DESC="Tomcat servlet engine" 
DEFAULT=/etc/default/$NAME 
JVM_TMP=/tmp/tomcat-tmp 

if [ `id -u` -ne 0 ]; then 
	echo "You need root privileges to run this script" 
	exit 1 
fi 

# Make sure tomcat is started with system locale 
if [ -r /etc/default/locale ]; then 
	. /etc/default/locale 
    export LANG 
fi 

. /lib/lsb/init-functions 

if [ -r /etc/default/rcS ]; then 
	. /etc/default/rcS 
fi 

# The following variables can be overwritten in $DEFAULT 

# Run Tomcat 8 as this user ID and group ID 
TOMCAT_USER=tomcat 
TOMCAT_GROUP=tomcat 

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not # defined in $DEFAULT) 
JDK_DIRS="/usr/lib/java"

# Look for the right JVM to use 
for jdir in $JDK_DIRS; do 
	if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then 
    	JAVA_HOME="$jdir" 
 	fi 
    done 
    
    export JAVA_HOME=/usr/lib/java 
    
    # Directory where the Tomcat binary distribution resides 
    CATALINA_HOME=/usr/$NAME 
    
    # Directory for per-instance configuration files and webapps 
    CATALINA_BASE=/usr/$NAME 
    
    # Use the Java security manager? (yes/no) 
    TOMCAT_SECURITY=no 
    
    # Default Java options 
    # Set java.awt.headless=true if JAVA_OPTS is not set so the 
    # Xalan XSL transformer can work without X11 display on JDK 1.4+ 
    # It also looks like the default heap size of 64M is not enough for most cases 
    # so the maximum heap size is set to 128M 
    if [ -z "$JAVA_OPTS" ]; then 
    	JAVA_OPTS="-Djava.awt.headless=true -Xmx128M" 
    fi 
    
    # End of variables that can be overwritten in $DEFAULT 
    
    # overwrite settings from default file 
 if [ -f "$DEFAULT" ]; then 
 	. "$DEFAULT" 
 fi 
 
 if [ ! -f "$CATALINA_HOME/bin/bootstrap.jar" ]; then 
 	log_failure_msg "$NAME is not installed" 
    exit 1 
 fi 
 
 POLICY_CACHE="$CATALINA_BASE/work/catalina.policy" 
 
 if [ -z "$CATALINA_TMPDIR" ]; then 
 	CATALINA_TMPDIR="$JVM_TMP" 
 fi 
 
 # Set the JSP compiler if set in the tomcat.default file 
 if [ -n "$JSP_COMPILER" ]; then 
 	JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=\"$JSP_COMPILER\"" 
 fi 
 
 SECURITY="" 
 
 if [ "$TOMCAT_SECURITY" = "yes" ]; then 
 	SECURITY="-security" 
 fi 
 
 # Define other required variables 
 CATALINA_PID="/var/run/$NAME.pid" 
 CATALINA_SH="$CATALINA_HOME/bin/catalina.sh" 
 
 # Look for Java Secure Sockets Extension (JSSE) JARs 
 if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then 
 	JSSE_HOME="${JAVA_HOME}/jre/" 
 fi 
 
 catalina_sh() { 
	 # Escape any double quotes in the value of JAVA_OPTS 
 	 JAVA_OPTS="$(echo $JAVA_OPTS | sed 's/\"/\\\"/g')" 
     
     AUTHBIND_COMMAND="" 
     if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then 
     	JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" 
        AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c " 
     fi 
     
     # Define the command to run Tomcat's catalina.sh as a daemon 
     # set -a tells sh to export assigned variables to spawned shells. 
     TOMCAT_SH="set -a; JAVA_HOME=\"$JAVA_HOME\"; source \"$DEFAULT\"; \ 
     	CATALINA_HOME=\"$CATALINA_HOME\"; \ 
        CATALINA_BASE=\"$CATALINA_BASE\"; \ 
        JAVA_OPTS=\"$JAVA_OPTS\"; \ 
        CATALINA_PID=\"$CATALINA_PID\"; \ 
        CATALINA_TMPDIR=\"$CATALINA_TMPDIR\"; \ 
        LANG=\"$LANG\"; JSSE_HOME=\"$JSSE_HOME\"; \ 
        cd \"$CATALINA_BASE\"; \ 
        \"$CATALINA_SH\" $@" 
        if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then 
        	TOMCAT_SH="'$TOMCAT_SH'" 
        fi 
        # Run the catalina.sh script as a daemon 
        set +e 
        touch "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out 
        chown $TOMCAT_USER "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out 
        start-stop-daemon --start -b -u "$TOMCAT_USER" -g "$TOMCAT_GROUP" \ 
        	-c "$TOMCAT_USER" -d "$CATALINA_TMPDIR" \ 
        	-x /bin/bash -- -c "$AUTHBIND_COMMAND $TOMCAT_SH" 
        status="$?" 
        set +a -e 
        return $status 
} 

case "$1" in 
	start) 
    	if [ -z "$JAVA_HOME" ]; then 
        	log_failure_msg "no JDK found - please set JAVA_HOME"
            exit 1 
        fi
        
        if [ ! -d "$CATALINA_BASE/conf" ]; then 
        	log_failure_msg "invalid CATALINA_BASE: $CATALINA_BASE" 
            exit 1 
        fi 
        
        log_daemon_msg "Starting $DESC" "$NAME" 
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ 
        	--user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \ 
            >/dev/null; then 
            
            # Regenerate POLICY_CACHE file 
            umask 022
            echo "// AUTO-GENERATED FILE from /opt/tomcat/" \ 
            		> "$POLICY_CACHE" 
            echo "" >> "$POLICY_CACHE" 
            cat $CATALINA_BASE/conf/*.policy \ 
            		>> "$POLICY_CACHE" 
                    
            # Remove / recreate JVM_TMP directory 
            rm -rf "$JVM_TMP" 
            mkdir -p "$JVM_TMP" || { 
            	log_failure_msg "could not create JVM temporary directory" 
                exit 1 
            } 
            chown $TOMCAT_USER "$JVM_TMP" 
            
            catalina_sh start $SECURITY 
            sleep 5 
            if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ 
            	--user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \ 
                >/dev/null; then if [ -f "$CATALINA_PID" ]; then 
                	rm -f "$CATALINA_PID" 
            fi 
            	log_end_msg 1 
            else 
            	log_end_msg 0 
            fi 
      else 
      		log_progress_msg "(already running)" 
            log_end_msg 0 
            
       fi 
       ;; 
  stop) 
  		log_daemon_msg "Stopping $DESC" "$NAME" 
        
        set +e 
        if [ -f "$CATALINA_PID" ]; then 
        	start-stop-daemon --stop --pidfile "$CATALINA_PID" \
            	--user "$TOMCAT_USER" \ 
                --retry=TERM/20/KILL/5 >/dev/null 
        if [ $? -eq 1 ]; then 
        		log_progress_msg "$DESC is not running but pid file exists, cleaning up" 
        elif [ $? -eq 3 ]; then 
        	PID="`cat $CATALINA_PID`" 
            log_failure_msg "Failed to stop $NAME (pid $PID)" 
            exit 1 
        fi 
        rm -f "$CATALINA_PID" 
        rm -rf "$JVM_TMP" 
   	else log_progress_msg "(not running)" 
   	fi 
    log_end_msg 0 
    set -e
    ;; 
status) 
	set +e 
    start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ 
    --user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \ 
    >/dev/null 2>&1 
    if [ "$?" = "0" ]; then 
    	
        if [ -f "$CATALINA_PID" ]; then 
        	log_success_msg "$DESC is not running, but pid file exists." 
           		exit 1 
        else log_success_msg "$DESC is not running." 
        		exit 3 
        fi 
     else 
     	log_success_msg "$DESC is running with pid `cat $CATALINA_PID`" 
     fi 
     set -e 
     ;;
restart|force-reload)
	if [ -f "$CATALINA_PID" ]; then 
    	$0 stop 
        sleep 1 
    fi 
    $0 start 
    ;; 
try-restart)
	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ 
    	--user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \ 
        >/dev/null; then 
        $0 start 
    fi 
    ;; 
*) 
	log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}" 
    exit 1 
    ;; 
esac 

exit 0

 

         πŸ‘‰ JAVA_HOME, CATALINA_HOME, Tomcat 계정,

              λ””λ ‰ν„°λ¦¬λŠ” κ°μžμ— ν™˜κ²½μ— 맞게 잘 μ„€μ • ν•΄μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€.

 

 

μ—¬κΈ°κΉŒμ§€ 잘 λ˜μ…¨λ‹€λ©΄ μΆ•ν•˜λ“œλ¦½λ‹ˆλ‹€! Tomcat이 정상 μ„€μΉ˜ λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

 


 

 

μ•„νŒŒμΉ˜ ν†°μΊ£ 7 λ”°λΌμž‘κΈ°

COUPANG

www.coupang.com

"이 ν¬μŠ€νŒ…μ€ 쿠팑 νŒŒνŠΈλ„ˆμŠ€ ν™œλ™μ˜ μΌν™˜μœΌλ‘œ, 이에 λ”°λ₯Έ μΌμ •μ•‘μ˜ 수수료λ₯Ό μ œκ³΅λ°›μŠ΅λ‹ˆλ‹€."

 

 

μ£Όλ‹ˆν•˜λž‘μ˜ 이번 ν¬μŠ€νŒ…μ΄ μ–΄λ– μ…¨λ‚˜μš”? ꡬ독, 곡감과 λŒ“κΈ€μ€ μ£Όλ‹ˆν•˜λž‘μ—κ²Œ 맀우 큰 힘이 될 κ²ƒμž…λ‹ˆλ‹€!

728x90
λ°˜μ‘ν˜•