일단 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를 직접 실행 시키면 제대로 동작하기는 했다.