2018-04-23
일단 jdk를 설치한다.

yum list java*jdk-devel라고 검색하면, jdk버전을 볼 수 있다. 자신에게 필요한 버전으로 설치하면 된다.
필자는 1.8버전을 이미 깔아놓았기 때문에 1.8버전이 깔려 있는걸 볼 수 있다.
[root@localhost ~]# yum list java*jdk-devel Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.neowiz.com * extras: mirror.kakao.com * updates: mirror.kakao.com Installed Packages java-1.8.0-openjdk-devel.x86_64 1:1.8.0.161-0.b14.el7_4 @updates Available Packages java-1.6.0-openjdk-devel.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base java-1.7.0-openjdk-devel.x86_64 1:1.7.0.171-2.6.13.0.el7_4 updates java-1.8.0-openjdk-devel.i686 1:1.8.0.161-0.b14.el7_4 updates

설치는 아래와 같이 하고, javac 명령어로 제대로 설치 됐는지 확인해보면 된다.
[root@localhost ~]# yum install java-1.8.0-openjdk-devel.x86_64 . . . Complete! [root@localhost ~]# javac -version javac 1.8.0_161


자 그럼 이제 본격적으로 톰켓을 설치해보자.

우선 wget으로 apache-tomcat을 받아오자.
필자가 작업한 디렉토리는 /home 이고, 톰캣7을 설치할 예정이어서 관련 파일을 받아왔다.
[root@localhost home]# wget http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.86/bin/apache-tomcat-7.0.86.tar.gz --2018-04-23 19:50:40-- http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.86/bin/apache-tomcat-7.0.86.tar.gz Resolving mirror.apache-kr.org (mirror.apache-kr.org)... 1.201.139.179 Connecting to mirror.apache-kr.org (mirror.apache-kr.org)|1.201.139.179|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9044537 (8.6M) [application/x-gzip] Saving to: ‘apache-tomcat-7.0.86.tar.gz’ 100%[================================================================>] 9,044,537 2.52MB/s in 3.4s 2018-04-23 19:50:43 (2.52 MB/s) - ‘apache-tomcat-7.0.86.tar.gz’ saved [9044537/9044537] [root@localhost home]# ll 합계 27560 -rw-r--r--. 1 root root 9044537 4월 10 05:59 apache-tomcat-7.0.86.tar.gz
위에서는 주소가 http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.86/bin/apache-tomcat-7.0.86.tar.gz로 되어 있는데, 이 주소에서 http://mirror.apache-kr.org/tomcat/tomcat-7 아래로는 버전업에 따라서 주소가 바뀌게 되니, 해당 주소가 없다면, http://mirror.apache-kr.org/tomcat/tomcat-7까지만 들어가서 직접 주소를 확인후 다운 받기 바란다.
ll명령어로 확인해보니 잘 다운 받아져 있다.

그 다음은 압축을 푼다.
[root@localhost home]# tar zxf apache-tomcat-7.0.86.tar.gz

이렇게 까지 했으면, 이제 실행을 하면 된다.
[root@localhost bin]# ll 합계 828 -rw-r--r--. 1 root root 28742 4월 10 05:20 bootstrap.jar -rw-r--r--. 1 root root 1647 4월 10 05:21 catalina-tasks.xml -rw-r--r--. 1 root root 14867 4월 10 05:20 catalina.bat -rwxr-xr-x. 1 root root 22524 4월 10 05:20 catalina.sh -rw-r--r--. 1 root root 207125 4월 10 05:20 commons-daemon-native.tar.gz -rw-r--r--. 1 root root 25145 4월 10 05:20 commons-daemon.jar -rw-r--r--. 1 root root 2040 4월 10 05:20 configtest.bat -rwxr-xr-x. 1 root root 1922 4월 10 05:20 configtest.sh -rwxr-xr-x. 1 root root 8509 4월 10 05:20 daemon.sh -rw-r--r--. 1 root root 2091 4월 10 05:20 digest.bat -rwxr-xr-x. 1 root root 1965 4월 10 05:20 digest.sh -rw-r--r--. 1 root root 3574 4월 10 05:20 setclasspath.bat -rwxr-xr-x. 1 root root 3680 4월 10 05:20 setclasspath.sh -rw-r--r--. 1 root root 2020 4월 10 05:20 shutdown.bat -rwxr-xr-x. 1 root root 1902 4월 10 05:20 shutdown.sh -rw-r--r--. 1 root root 2022 4월 10 05:20 startup.bat -rwxr-xr-x. 1 root root 1904 4월 10 05:20 startup.sh -rw-r--r--. 1 root root 45465 4월 10 05:20 tomcat-juli.jar -rw-r--r--. 1 root root 405109 4월 10 05:20 tomcat-native.tar.gz -rw-r--r--. 1 root root 4550 4월 10 05:20 tool-wrapper.bat -rwxr-xr-x. 1 root root 5458 4월 10 05:20 tool-wrapper.sh -rw-r--r--. 1 root root 2026 4월 10 05:20 version.bat -rwxr-xr-x. 1 root root 1908 4월 10 05:20 version.sh [root@localhost bin]# [root@localhost bin]# ./startup.sh Using CATALINA_BASE: /home/apache-tomcat-7.0.86 Using CATALINA_HOME: /home/apache-tomcat-7.0.86 Using CATALINA_TMPDIR: /home/apache-tomcat-7.0.86/temp Using JRE_HOME: /usr Using CLASSPATH: /home/apache-tomcat-7.0.86/bin/bootstrap.jar:/home/apache-tomcat-7.0.86/bin/tomcat-juli.jar Tomcat started.
해당 디렉터리의 bin디렉터리에 들어가서, startup.sh파일을 실행하면 바로 시작이 되고, localhost:8080으로 접속해보면 고양이를 볼 수 있을 것이다.
멈출때는 shutdown.sh를 실행하면 된다.


하지만 관리의 편의성을 위해서 service에 등록하고 싶다면 아래와 같은 작업을 좀 더 해주어야 한다.

우선 관리의 편의성을 위해서 /usr/local 폴더로 옮긴다.
[root@localhost home]# mv apache-tomcat-7.0.86 /usr/local/tomcat7
그리고, /etc/init.d디렉토리에 tomcat7이라는 이름의 파일로 쉘스크립트를 짜준다.
참조: https://zetawiki.com/wiki/리눅스_톰캣7_컴파일_설치
[root@localhost bin]# cd /etc/init.d/ [root@localhost init.d]# touch tomcat7 [root@localhost init.d]# chmod 755 tomcat7 [root@localhost init.d]# vim tomcat7
#!/bin/bash
#JAVA_HOME=/usr/java/jdk
#export JAVA_HOME
#JRE_HOME=/usr/java/jre
#export JRE_HOME
#PATH=$JAVA_HOME/bin:$PATH
#export PATH
CATALINA_HOME="/usr/local/tomcat7"
NAME="$(basename $0)"
case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
status)
if [ -f "/var/run/${NAME}.pid" ]; then
	read kpid < /var/run/${NAME}.pid
	if [ -d "/proc/${kpid}" ]; then
		echo "${NAME} (pid ${kpid}) is running..."
	fi
else
	pid="$(/usr/bin/pgrep -d , java)"
	if [ -z "$pid" ]; then
		echo "${NAME} is stopped"
	else
		echo "${NAME} (pid $pid) is running..."
	fi
fi
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
version)
sh $CATALINA_HOME/bin/version.sh
;;
*)
echo "Usage: $0 {start|stop|restart|status|version}"
;;
esac
exit 0

그리고 아래와 같이 실행을 하면, 잘 실행이 되는것을 볼 수 있다.
[root@localhost /]# service tomcat7 Usage: /etc/init.d/tomcat7 {start|stop|restart|status|version} [root@localhost /]# service tomcat7 start Using CATALINA_BASE: /usr/local/tomcat7 Using CATALINA_HOME: /usr/local/tomcat7 Using CATALINA_TMPDIR: /usr/local/tomcat7/temp Using JRE_HOME: / Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar Tomcat started.

CentOS7은 systemctl을 사용하지만, 위 방법으로 해도 잘 동작하기는 한다.



//------------------- 2018.05.23 추가

위의 서비스로 등록하는 방식은 종종 제대로 동작하지 않는 경우가 있다는게 확인 되었다.
실험해본 서버중에서 단 한대에서만 발생한 일이긴 한데,
최근 임의의 test프로젝트를 test.war파일로 export 한뒤에, /usr/local/tomcat7/webapps/test.war 위치에 옮겨놓고, 위의 서비스를 start 해본 결과, .war파일이 제대로 풀어지지 않는 현항이 발생 했었다.
대처방법으로는 서비스로 등록하지 않고, startup.sh를 직접 실행 시키면 제대로 동작하기는 했다.