웹사이트 검색

Ubuntu 16.04에 Apache Tomcat 8을 설치하는 방법


소개

Apache Tomcat은 Java 애플리케이션을 제공하는 데 사용되는 웹 서버 및 서블릿 컨테이너입니다. Tomcat은 Apache Software Foundation에서 출시한 Java Servlet 및 JavaServer Pages 기술의 오픈 소스 구현입니다. 이 튜토리얼은 Ubuntu 16.04 서버에서 최신 Tomcat 8 릴리스의 기본 설치 및 일부 구성을 다룹니다.

전제 조건

이 가이드를 시작하기 전에 서버에 설정된 sudo 권한이 있는 루트가 아닌 사용자가 있어야 합니다. Ubuntu 16.04 초기 서버 설정 가이드를 완료하여 이를 수행하는 방법을 배울 수 있습니다.

1단계: 자바 설치

Tomcat은 모든 Java 웹 응용 프로그램 코드를 실행할 수 있도록 서버에 Java를 설치해야 합니다. apt-get으로 OpenJDK를 설치하면 해당 요구 사항을 충족할 수 있습니다.

먼저 apt-get 패키지 색인을 업데이트합니다.

  1. sudo apt-get update

그런 다음 apt-get을 사용하여 Java Development Kit 패키지를 설치합니다.

  1. sudo apt-get install default-jdk

이제 Java가 설치되었으므로 Tomcat 서비스를 실행하는 데 사용할 tomcat 사용자를 만들 수 있습니다.

2단계: Tomcat 사용자 생성

보안을 위해 Tomcat은 권한이 없는 사용자(즉, 루트가 아님)로 실행해야 합니다. Tomcat 서비스를 실행할 새 사용자 및 그룹을 생성합니다.

먼저 새 tomcat 그룹을 만듭니다.

  1. sudo groupadd tomcat

다음으로 새 tomcat 사용자를 만듭니다. 우리는 이 사용자를 /opt/tomcat의 홈 디렉터리(Tomcat을 설치할 위치)와 </bin/false(아무도 계정에 로그인할 수 없도록):

  1. sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

이제 tomcat 사용자가 설정되었으므로 Tomcat을 다운로드하여 설치해 보겠습니다.

3단계: 톰캣 설치

Tomcat 8을 설치하는 가장 좋은 방법은 최신 바이너리 릴리스를 다운로드한 다음 수동으로 구성하는 것입니다.

Tomcat 8 다운로드 페이지에서 최신 버전의 Tomcat 8을 찾으십시오. 작성 당시 최신 버전은 8.5.5이지만 가능하다면 이후의 안정적인 버전을 사용해야 합니다. Binary Distributions 섹션의 Core 목록에서 "tar.gz\에 대한 링크를 복사합니다.

그런 다음 서버의 /tmp 디렉토리로 변경합니다. 이것은 Tomcat 콘텐츠를 추출한 후 필요하지 않은 Tomcat tarball과 같은 임시 항목을 다운로드하기에 좋은 디렉토리입니다.

  1. cd /tmp

curl을 사용하여 Tomcat 웹 사이트에서 복사한 링크를 다운로드합니다.

  1. curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

/opt/tomcat 디렉터리에 Tomcat을 설치합니다. 디렉터리를 만든 다음 다음 명령을 사용하여 아카이브를 추출합니다.

  1. sudo mkdir /opt/tomcat
  2. sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1

다음으로 설치에 대한 적절한 사용자 권한을 설정할 수 있습니다.

4단계: 권한 업데이트

우리가 설정한 tomcat 사용자는 Tomcat 설치에 대한 액세스 권한이 있어야 합니다. 지금 설정하겠습니다.

Tomcat 설치의 압축을 푼 디렉토리로 변경합니다.

  1. cd /opt/tomcat

전체 설치 디렉터리에 대한 tomcat 그룹 소유권을 부여합니다.

  1. sudo chgrp -R tomcat /opt/tomcat

다음으로, conf 디렉토리와 모든 콘텐츠에 대한 tomcat 그룹 읽기 액세스 권한을 부여하고 디렉토리 자체에 대한 실행 액세스 권한을 부여합니다.

  1. sudo chmod -R g+r conf
  2. sudo chmod g+x conf

tomcat 사용자를 webapps, work, templogs 의 소유자로 만듭니다. 디렉토리:

  1. sudo chown -R tomcat webapps/ work/ temp/ logs/

이제 적절한 권한이 설정되었으므로 Tomcat 프로세스를 관리하기 위한 systemd 서비스 파일을 만들 수 있습니다.

5단계: systemd 서비스 파일 생성

Tomcat을 서비스로 실행할 수 있기를 원하므로 systemd 서비스 파일을 설정합니다.

Tomcat은 Java가 설치된 위치를 알아야 합니다. 이 경로는 일반적으로 "JAVA_HOME\이라고 합니다. 해당 위치를 찾는 가장 쉬운 방법은 다음 명령을 실행하는 것입니다.

  1. sudo update-java-alternatives -l
Output
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64

올바른 JAVA_HOME 변수는 마지막 열(빨간색으로 강조 표시됨)에서 출력을 가져와 끝에 /jre를 추가하여 구성할 수 있습니다. 위의 예에서 이 서버의 올바른 JAVA_HOME은 다음과 같습니다.

JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre

귀하의 JAVA_HOME은 다를 수 있습니다.

이 정보를 사용하여 systemd 서비스 파일을 만들 수 있습니다. 다음을 입력하여 /etc/systemd/system 디렉토리에서 tomcat.service라는 파일을 엽니다.

  1. sudo nano /etc/systemd/system/tomcat.service

다음 내용을 서비스 파일에 붙여넣습니다. 필요한 경우 시스템에서 찾은 값과 일치하도록 JAVA_HOME 값을 수정합니다. CATALINA_OPTS에 지정된 메모리 할당 설정을 수정할 수도 있습니다.

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

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

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

[Install]
WantedBy=multi-user.target

완료되면 파일을 저장하고 닫습니다.

다음으로 서비스 파일에 대해 알 수 있도록 systemd 데몬을 다시 로드합니다.

  1. sudo systemctl daemon-reload

다음을 입력하여 Tomcat 서비스를 시작합니다.

  1. sudo systemctl start tomcat

다음을 입력하여 오류 없이 시작되었는지 다시 확인하십시오.

  1. sudo systemctl status tomcat

6단계: 방화벽 조정 및 Tomcat 서버 테스트

이제 Tomcat 서비스가 시작되었으므로 기본 페이지를 사용할 수 있는지 테스트할 수 있습니다.

그 전에 요청이 서비스에 도달할 수 있도록 방화벽을 조정해야 합니다. 전제 조건을 따랐다면 현재 ufw 방화벽이 활성화되어 있을 것입니다.

Tomcat은 일반적인 요청을 수락하기 위해 포트 8080을 사용합니다. 다음을 입력하여 해당 포트에 대한 트래픽을 허용합니다.

  1. sudo ufw allow 8080

방화벽이 수정된 상태에서 웹 브라우저에서 도메인 또는 IP 주소로 이동한 다음 :8080으로 이동하여 기본 스플래시 페이지에 액세스할 수 있습니다.

Open in web browser
http://server_domain_or_IP:8080

다른 정보와 함께 기본 Tomcat 시작 페이지가 표시됩니다. 그러나 예를 들어 관리자 앱의 링크를 클릭하면 액세스가 거부됩니다. 다음에 해당 액세스를 구성할 수 있습니다.

성공적으로 Tomcat에 액세스할 수 있었다면 Tomcat이 부팅 시 자동으로 시작되도록 서비스 파일을 활성화하는 것이 좋습니다.

  1. sudo systemctl enable tomcat

7단계: Tomcat 웹 관리 인터페이스 구성

Tomcat과 함께 제공되는 관리자 웹 앱을 사용하려면 Tomcat 서버에 로그인을 추가해야 합니다. tomcat-users.xml 파일을 편집하여 이 작업을 수행합니다.

  1. sudo nano /opt/tomcat/conf/tomcat-users.xml

manager-guiadmin-gui(Tomcat과 함께 제공되는 웹 앱)에 액세스할 수 있는 사용자를 추가하고 싶을 것입니다. 아래 예와 같이 tomcat-users 태그 사이에 사용자를 정의하면 됩니다. 사용자 이름과 암호를 안전한 것으로 변경해야 합니다.

<tomcat-users . . .>
    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>

완료되면 파일을 저장하고 닫습니다.

기본적으로 최신 버전의 Tomcat은 Manager 및 Host Manager 앱에 대한 액세스를 서버 자체에서 오는 연결로 제한합니다. 원격 시스템에 설치 중이므로 이 제한을 제거하거나 변경하고 싶을 것입니다. 이에 대한 IP 주소 제한을 변경하려면 적절한 context.xml 파일을 엽니다.

Manager 앱의 경우 다음을 입력합니다.

  1. sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

호스트 관리자 앱의 경우 다음을 입력합니다.

  1. sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

내부에서 IP 주소 제한을 주석 처리하여 어디서나 연결할 수 있습니다. 또는 자신의 IP 주소에서 오는 연결에만 액세스를 허용하려는 경우 공용 IP 주소를 목록에 추가할 수 있습니다.

<Context antiResourceLocking="false" privileged="true" >
  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>

완료되면 파일을 저장하고 닫습니다.

변경 사항을 적용하려면 Tomcat 서비스를 다시 시작하십시오.

  1. sudo systemctl restart tomcat

8단계: 웹 인터페이스에 액세스

이제 사용자를 생성했으므로 웹 브라우저에서 웹 관리 인터페이스에 다시 액세스할 수 있습니다. 다시 한 번 브라우저의 포트 8080에서 서버의 도메인 이름 또는 IP 주소를 입력하여 올바른 인터페이스에 액세스할 수 있습니다.

Open in web browser
http://server_domain_or_IP:8080

표시되는 페이지는 이전에 테스트할 때 제공된 페이지와 동일해야 합니다.

링크 또는 http://server_domain_or_IP:8080/manager/html를 통해 액세스할 수 있는 Manager 앱을 살펴보겠습니다. tomcat-users.xml 파일에 추가한 계정 자격 증명을 입력해야 합니다. 그러면 다음과 같은 페이지가 표시됩니다.

웹 응용 프로그램 관리자는 Java 응용 프로그램을 관리하는 데 사용됩니다. 여기에서 시작, 중지, 다시 로드, 배포 및 배포 취소할 수 있습니다. 앱에서 일부 진단을 실행할 수도 있습니다(예: 메모리 누수 찾기). 마지막으로 서버에 대한 정보는 이 페이지 맨 아래에서 확인할 수 있습니다.

이제 링크 또는 http://server_domain_or_IP:8080/host-manager/html/를 통해 액세스할 수 있는 호스트 관리자를 살펴보겠습니다.

Virtual Host Manager 페이지에서 애플리케이션을 제공할 가상 호스트를 추가할 수 있습니다.

결론

Tomcat 설치가 완료되었습니다! 이제 자신만의 Java 웹 애플리케이션을 무료로 배포할 수 있습니다!

현재 Tomcat 설치는 작동하지만 완전히 암호화되지 않았습니다. 이는 암호와 같은 민감한 항목을 포함한 모든 데이터가 인터넷에서 다른 당사자가 가로채고 읽을 수 있는 일반 텍스트로 전송됨을 의미합니다. 이를 방지하려면 SSL로 연결을 암호화하는 것이 좋습니다. 이 가이드를 따라 Tomcat에 대한 연결을 암호화하는 방법을 찾을 수 있습니다.