ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스에 Tomcat 설치
    IT/Linux 2019. 6. 6. 23:41

    (현재) 뉴비때 리눅스에 웹프로젝트를 올리려고 하는데, 당시에는 Web Server와 WAS의 개념과 원리도 잘 몰랐을 뿐더러 톰캣에 대한 범용적인 설정지식도 없었다.

    그냥 찾아보고 마구잡이로 적용해보던 시기에서 다른 블로그에 리눅스에 톰캣설치하는 삽질을 기록해뒀길래 포워딩 해온다.

     

     


    리눅스 서버에 웹프로젝트를 올리기 위해서는 리눅스에도 Tomcat을 설치해야 한다.

    그리고 Tomcat을 설치하기 전에 JDK를 설치해야 하는데, 리눅스의 경우 Open JDK를 내장하고 있다.

     

    그래서 기존의 Open JDK를 삭제하고 정식 Oracle JDK를 설치하든,

    그냥 Open JDK를 놔두고 Oracle JDK를 설치한 후, 메인을 Oracle JDK로 바꿔주든

    나름대로의 셋팅이 필요하다.

     

     


    1-1. OPEN JDK 조회

    1. 리눅스에서 현재의 Open JDK의 버전을 확인한다.

    [root@localhost /]# java -version
    openjdk version "1.8.0_102"
    OpenJDK Runtime Environment (build 1.8.0_102-b14)
    OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode) 

     

     

    2. 현재 설치된 JDK 목록을 확인한다.

    [root@localhost /]# yum list installed | grep jdk 

    [root@localhost /]# yum list installed | grep jdk
    java-1.7.0-openjdk.x86_64          1:1.7.0.111-2.6.7.2.el7_2 @updates
    java-1.7.0-openjdk-headless.x86_64 1:1.7.0.111-2.6.7.2.el7_2 @updates
    java-1.8.0-openjdk.x86_64          1:1.8.0.102-1.b14.el7_2   @updates
    java-1.8.0-openjdk-headless.x86_64 1:1.8.0.102-1.b14.el7_2   @updates  

     

     

    3. alternatives 설정을 확인한다.

    [root@localhost /]# alternatives --config java
    
    2 개의 프로그램이 'java'를 제공합니다.
    
    선택 명령 -----------------------------------------------
    *+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64/jre/bin/java
       2 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111-2.6.7.2.el7_2.x86_64/jre/bin/java
    
    현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오:

     

     

     

    1-2. Oracle JDK 설치

     

    1. OS 종류 확인

    [root@localhost /]# getconf LONG_BIT
    64

     

     

    2. JDK 다운로드

    아래 주소에서 자신의 OS에 맞는 RPM 버전을 다운로드

    http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html

     

     

    3. 다운로드 된 경로로 cd를 통해 이동 후, 설치

    [root@localhost /]# yum localinstall jdk-8u102-linux-x64.rpm 
    . 
    . 
    .

     

    4. 다운받은 Oracle JDK를 alternatives로 설정

    [root@localhost Downloads]# alternatives --config java 
    
    3 개의 프로그램이 'java'를 제공합니다. 
    
    선택 명령 ----------------------------------------------- 
    
    *+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64/jre/bin/java 
       2 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111-2.6.7.2.el7_2.x86_64/jre/bin/java 
       3 /usr/java/jdk1.8.0_102/jre/bin/java 
    
    현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오: 3 

     

    5. 새로설치한 JDK가 적용되었는지 버전확인

    [root@localhost Downloads] java -version 
    java version "1.8.0_102" 
    Java(TM) SE Runtime Environment (build 1.8.0_102-b14) 
    Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 

     

     

    6. 심볼릭 링크 설정

    - 심볼릭 링크란 쉽게 이야기하면 윈도우에서 바로가기 같은 역할

    - 심볼릭 링크를 거는 이유는 여러가지 있을 수 있지만 여기서는 JDK 버전을 업데이트 시 환경 설정의 변화 없이

       심볼릭링크로 새로 생성된 디렉토리의 내용만 수정해 주면 되기 때문

    (무슨소린진 잘 모르겠지만 다른 포스트에서도 심볼릭 링크를 걸어주는 과정을 하고있으니 나도 일단 따라해봄)

     

    [root@localhost java]# pwd
    /usr/java
    
    [root@localhost java]# ln -s jdk1.8.0_131 java
    
    [root@localhost java]# ls -l
    합계 4
    lrwxrwxrwx. 1 root root   16 2017-06-07 13:46 default -> /usr/java/latest
    lrwxrwxrwx. 1 root root   12 2017-06-12 16:06 java -> jdk1.8.0_131
    drwxr-xr-x. 9 root root 4096 2017-06-07 13:46 jdk1.8.0_131
    lrwxrwxrwx. 1 root root   22 2017-06-07 13:46 latest -> /usr/java/jdk1.8.0_131

     

    7. 환경변수 설정

    [root@localhost /]# vi /etc/profile
    
    JAVA_HOME=/usr/java/default
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME CLASSPATH PATH 

     

     

     

    1-3. OPEN JDK 제거하고 JDK 설치 마지막 확인

    [root@localhost /]# alternatives --remove java /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111-2.6.7.2.el7_2.x86_64/jre/bin/java
    [root@localhost /]# yum remove java-1.7.0-openjdk-headless
    [root@localhost /]# alternatives --remove java /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64/jre/bin/java
    [root@localhost /]# yum remove java-1.8.0-openjdk-headless 

     

    [root@localhost /]# alternatives --config java
    
    1 개의 프로그램이 'java'를 제공합니다.
    선택 명령
    -----------------------------------------------
    *+ 1 /usr/java/jdk1.8.0_102/jre/bin/java
    
    현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오:
    
    
    
    [root@oracle ~]# yum list installed | grep jdk
    jdk1.8.0_102.x86_64 2000:1.8.0_102-fcs @/jdk-8u102-linux-x64
    
    
    
    [root@oracle java]# alternatives --list
    java manual /usr/java/jdk1.8.0_102/jre/bin/java
    javac auto /usr/java/jdk1.8.0_102/bin/javac 

     

     

     

     

     


    리눅스 내에 JDK 설치가 끝났다면 이제 Apache Tomcat 을 설치할 차례다.

     

    2-1. Tomcat 다운

    구글링을 해보면 죄다 wget을 이용해서 다운로드링크를 통해 다운받는 설명이 있는데

    전부 1년이상 된 자료들이다 보니 제시된 링크로는

    [root@localhost ~]# http://apache.mirror.cdnetworks.com/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz
    
    -bash: http://apache.mirror.cdnetworks.com/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz:
    그런 파일이나 디렉터리가 없습니다

    로 뜬다.

     

    고로 나는 startx​로 GUI를 킨 다음 http://tomcat.apache.org/download-70.cgi 로 접속한 뒤

    Core : tar.gz 를 직접 다운받았다.

    (WinSCP같은 FTP 프로그램으로 파일을 옮겨도 된다.)

     

    다운받은 뒤, 본인이 다운받은 경로로 들어가자.

    [root@localhost ~]# cd /root/Downloads
    
    [root@localhost Downloads]# ls
    
    jdk-8u131-linux-i586.rpm apache-tomcat-7.0.78.tar.gz 
    jdk-8u131-linux-x64.rpm

     

    위와같이 다운받은 톰캣의 tar.gz가 있다.

     

     

     

    2-2. 압축 풀기 및 이동

    tar.gz 의 압축을 해제하자.

    tar 명령어의 주요 -옵션이다.

    -z  : 압축 / 압축 해제

    -x  : tar 파일의 묶음 해제

    -v  : 진행상황 화면 출력

    -f  : tar 파일의 이름지정

    [root@localhost Downloads]# tar -zxvf apache-tomcat-7.0.78.tar.gz

     

     

     

     

    압축을 풀고나면 Tomcat의 디렉토리가 생긴다.

    [root@localhost Downloads]# ls
    
    apache-tomcat-7.0.78         jdk-8u131-linux-i586.rpm
    apache-tomcat-7.0.78.tar.gz  jdk-8u131-linux-x64.rpm

     

     

     

    폴더를 /usr/local 로 옮기자.

    (local은 윈도우에서 ProgramFiles 와 비슷한 폴더라고 한다)

    [root@localhost Downloads]# mkdir /usr/local/server
    (폴더 만들고)
    
    [root@localhost Downloads]# rm apache-tomcat-7.0.78.tar.gz
    rm: remove 일반 파일 'apache-tomcat-7.0.78.tar.gz'? y
    (다운받았던 압축파일은 지우고)
    
    [root@localhost Downloads]# ls
    apache-tomcat-7.0.78         jdk-8u131-linux-i586.rpm
    jdk-8u131-linux-x64.rpm
    (잘 지워졌는지 확인한번 해보고)
    
    [root@localhost Downloads]# mv apache-tomcat-7.0.78 /usr/local/server
    (새로만든 폴더로 tomcat폴더 옮기고) 
    
    [root@localhost Downloads]# cd /usr/local/server
    (내 위치 새로만든 폴더로 이동하고)
    
    [root@localhost server]# ls
    apache-tomcat-7.0.78
    (새로만든 폴더에 옮긴 톰캣폴더 잘 들어있는지 확인)

     

     

     

    그다음 JDK와 마찬가지로 심볼릭 링크를 걸어주자.

    윈도우의 바로가기 역할을 한다고 하는데. 난 뭔지 잘 모르겠다.

    일단 남들도 다 하니 나도 그대로 따라하기

    [root@localhost server]# ln -s apache-tomcat-7.0.78 tomcat
    
    
    [root@localhost server]# ls -s
    합계 4
    4 apache-tomcat-7.0.78  0 tomcat

     

     

     

    2-3. 환경변수 설정

    [root@localhost server] # vim /etc/profile
    
    (JDK 환경변수 설정 했던 부분을 수정한다.)
    
    JAVA_HOME=/usr/local/java
    CATALINA_HOME=/usr/local/server/tomcat
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib-jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
    PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
    export JAVA_HOME CLASSPATH PATH CATALINA_HOME

    수정 후 esc -> :w -> :q로 빠져나온다.


     

    환경변수 수정사항을 적용한다.

    [root@localhost lib]# source /etc/profile

     

     

    Tomcat 구동을 위해 방화벽 설정을 변경한다.

    Tomcat의 기본 포트인 8080포트 방화벽을 해제한다.

    [root@localhost tomcat]# vim /etc/sysconfig/iptables
    (8080포트 해제 코드를 입력한다.) 
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

    수정 후 esc -> :wq 로 빠져나온다.

     

     

     

    그다음 포트포워딩 설정을 해준다.

     

     

    Tomcat을 위한 8080포트를 열어준다.

    왜열어주는진 잘모르겠다.

    걍 고수들이 그렇게하니까.. 따라서 해준다.

     

    포트포워딩까지 완료했으면 아까 위에서 8080포트를 수정해줬던 iptables를 재시작해준다.

    [root@localhost ~]# /etc/init.d/iptables restart

     

     

     

     

     

    2-4. Tomcat 서버 구동/중지

    [root@localhost ~]# /usr/local/server/tomcat/bin/startup.sh
      ( - 톰캣 구동 )
    Using CATALINA_BASE:   /usr/local/server/tomcat
    Using CATALINA_HOME:   /usr/local/server/tomcat
    Using CATALINA_TMPDIR: /usr/local/server/tomcat/temp
    Using JRE_HOME:        /usr/java/java
    Using CLASSPATH:       /usr/local/server/tomcat/bin/bootstrap.jar:/usr/local/server/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    
    
    
    
    
    [root@localhost ~]# /usr/local/server/tomcat/bin/shutdown.sh
      ( - 톰캣 중지 ) 
    Using CATALINA_BASE:   /usr/local/server/tomcat
    Using CATALINA_HOME:   /usr/local/server/tomcat
    Using CATALINA_TMPDIR: /usr/local/server/tomcat/temp
    Using JRE_HOME:        /usr/java/java
    Using CLASSPATH:       /usr/local/server/tomcat/bin/bootstrap.jar:/usr/local/server/tomcat/bin/tomcat-juli.jar

     

     

     

     

    2-5. 부팅 시 Tomcat 자동실행 설정

    설정은 간단한 듯, 복잡하다.

    실행 스크립트 작성 ->퍼미션(권한) 작업 -> run level 등록의 과정이 필요하다.

     

    실행 스크립트 작성

    [root@localhost ~]# vim /etc/rc.d/init.d/tomcat
    ( - init.d 폴더 안에 tomcat이라는 파일을 만들어준다. )

     

    안에 채워주어야 되는 내용

    #!/bin/bash
    # Startup script for the Tomcat Server
    # chkconfig: 345 50 50
    # description: Tomcat is a Web application server.
    # processname: java
    # directory : CATALINA_HOME=/usr/local/server/tomcat
    source /etc/profile
    export CATALINA_HOME=/usr/local/server/tomcat
    case "$1" in
        start)
            echo "Starting tomcat: "
            su - dongkyung -c $CATALINA_HOME/bin/startup.sh
            ;;
        stop)
            echo "Shutting down tomcat: "
            su - dongkyung -c $CATALINA_HOME/bin/shutdown.sh
            ;;
        restart)
            echo "Restarting tomcat: "
            su - dongkyung -c $CATALINA_HOME/bin/shutdown.sh;
            su - dongkyung -c $CATALINA_HOME/bin/startup.sh
            ;;
        *)
            echo "Usage: service tomcat {start|stop|restart}"
            exit 1
    esac
    exit 0

    자신의 서버 환경에 맞게 몇가지 수정이 필요하다.

    - 6행 #directory 안에 CATALINA_HOME 

    - 8행 export CATALINA_HOME

     두 행의 경로를 자신이 설치되어있는 톰켓의 경로로 수정

     

    -12행 , 16행, 20행, 21행

    su - dongkyung 에서

    dongkyung 부분을 자신의 계정ID로 변경

     

     

    이제 만들었던 파일에 대한 접근권한을 설정해야 한다.

    [root@localhost ~]# cd /etc/rc.d/init.d
    - (만들었던 tomcat파일이 담긴 init.d폴더로 이동)
    
    [root@localhost init.d]# ls
    - (만들었던 tomcat 파일이 있는지 확인)
    
    [root@localhost init.d]# chown dongkyung:dongkyung tomcat
    - (tomcat파일의 소유자를 계정ID로 변경)
    
    [root@localhost init.d]# chmod 755 tomcat
    - (tomcat파일의 퍼미션을 rwx / r_x / r_x로 변경)
    
    [root@localhost init.d]# chkconfig --add tomcat
    - (tomcat 파일을 chkconfig에 등록 - 시작시 실행)
    
    [root@localhost init.d]# chkconfig --list tomcat
    tomcat          0:해제  1:해제  2:해제  3:활성  4:활성  5:활성  6:해제
    - (run level 에 따른 tomcat의 시작옵션 확인)

     

     

     

    작업이 끝났다면 사용자 계정으로 로그인 하여 위의 startup.sh 와 shutdown.sh의 방법이 아닌,

    방금 스크립트로 등록했던 서비스의 기능으로 톰캣을 재시작 해본다.

    로그인

    [root@localhost init.d]# su dongkyung
    - (사용자 계정으로 로그인 한 후

     

     

    서비스 - 톰캣중지

    [dongkyung@localhost init.d]$ service tomcat stop
    - (서비스로 톰캣을 중지하고 암호를 입력)
    Shutting down tomcat:
    암호:
    Using CATALINA_BASE:   /usr/local/server/tomcat
    Using CATALINA_HOME:   /usr/local/server/tomcat
    Using CATALINA_TMPDIR: /usr/local/server/tomcat/temp
    Using JRE_HOME:        /usr/java/java
    Using CLASSPATH:       /usr/local/server/tomcat/bin/bootstrap.jar:/usr/local/server/tomcat/bin/tomcat-juli.jar

     

    서비스 - 톰캣실행

    [dongkyung@localhost init.d]$ service tomcat start
    - (똑같이서비스로 톰캣을 구동하고 암호를 입력)
    Starting tomcat:
    암호:
    Using CATALINA_BASE:   /usr/local/server/tomcat
    Using CATALINA_HOME:   /usr/local/server/tomcat
    Using CATALINA_TMPDIR: /usr/local/server/tomcat/temp
    Using JRE_HOME:        /usr/java/java
    Using CLASSPATH:       /usr/local/server/tomcat/bin/bootstrap.jar:/usr/local/server/tomcat/bin/tomcat-juli.jar
    Tomcat started.

     

    8080 포트열렸는지

    [dongkyung@localhost init.d]$ netstat -ntl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:39514               0.0.0.0:*                   LISTEN
    tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN
    tcp        0      0 :::8009                     :::*                        LISTEN
    tcp        0      0 :::111                      :::*                        LISTEN
    tcp        0      0 :::8080                     :::*                        LISTEN
    tcp        0      0 :::22                       :::*                        LISTEN
    tcp        0      0 :::45558                    :::*                        LISTEN
    tcp        0      0 ::1:631                     :::*                        LISTEN

     

     

     

    완료됐다면 [dongkyung@localhost ~] $ startx로 GUI로 접속해 주소창에 localhost:8080를 치면 아래와 같이 귀여운 고양이가 나오게 된다.

    (putty에서는 작동하지 않는다. 가상머신[VirtureBox]을 이용해서 직접 리눅스를 조작하는 환경에서 실행.) 

    (현재)왜 굳이 이걸 startx GUI로 확인을 해야만 한다고 생각했는지...... 창피할 노릇이다.

    톰캣이 올라가있다면, 윈도우에서도 리눅스서버의 IP를 치고 확인 가능하다.

    아마, 작성 할 당시에는 서버에 접속하는 개념에 대해 잘 몰라서 저렇게 생각했나보다.

     

     

     

     

    이후 [dongkyung@localhost ~] $ service tomcat stop 을 실행해본다.

    그런다음 localhost:8080를 새로고침 해보면 페이지를 표시할 수 없다고 나온다.

     

     

     

    -----------------------------------------------------------------------------------------------------------------------

    service로 톰캣을 실행하고 끄는 과정에서 허가 거부가 나오는경우

    에러코드를 살펴보고 어느 파일에서 허가 거부가 나오는지 파악한 뒤에

    구글링을 통해 chmod(소유자 변경)와 chown(권한 변경)을 알아보고

    허가 거부가 나오는 문제의 파일에 퍼미션을 변경해 에러를 해결하자.

     

     

    댓글

다치지 말고 운동하자.