SW/리눅스

Linux : CentOS 8 : Tomcat 9 설치 방법, 예제, 명령어

얇은생각 2022. 6. 9. 07:30
반응형

Apache Tomcat은 Java 서블릿, JavaServer Pages, Java Expression Language 및 Java WebSocket 기술의 오픈 소스 구현체입니다. 오늘날 세계에서 가장 널리 채택된 애플리케이션 및 웹 서버 중 하나입니다. Tomcat은 사용이 간편하고 강력한 추가 기능 생태계를 갖추고 있습니다.

CentOS 8에 Tomcat 9.0을 설치하는 방법을 설명합니다.

 

 

 

Java를 설치

Tomcat 9를 사용하려면 Java SE 8 이상이 필요합니다. 자바 플랫폼의 오픈 소스 구현체인 OpenJDK 11을 설치하겠습니다.

다음 명령을 루트 또는 sudo 권한이 있는 사용자로 실행하여 Java를 설치합니다.

sudo dnf install java-11-openjdk-devel

 

 

설치가 완료되면 Java 버전을 확인하여 확인합니다.

java -version

# openjdk version "11.0.5" 2019-10-15 LTS
# OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
# OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)

 

 

 

시스템 사용자 생성

루트 사용자 아래에서 Tomcat을 실행하면 보안 위험이 있습니다. Tomcat 서비스를 실행할 홈 디렉토리 /opt/tomcat을 사용하여 새 시스템 사용자와 그룹을 생성합니다. 이렇게 하려면 다음 명령을 입력합니다.

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

 

 

 

Tomcat을 다운로드

Tomcat 이진 배포는 Tomcat 다운로드 페이지에서 다운로드할 수 있습니다.

최신 Tomcat 버전은 9.0.30입니다. 다음 단계를 계속하기 전에 Tomcat 9 다운로드 페이지에서 최신 버전이 있는지 확인하십시오.

wget를 사용하여 Tomcat zip 파일을 /tmp 디렉토리에 다운로드합니다.

VERSION=9.0.30
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp

 

 

 

다운로드가 완료되면 tar 파일을 /opt/tomcat 디렉토리에 압축을 풉니다.:

sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

 

 

Tomcat은 정기적으로 업데이트됩니다. 버전 및 업데이트를 보다 효과적으로 제어하기 위해 Tomcat 설치 디렉토리를 가리키는 최신 버전이라는 심볼 링크를 만듭니다.

sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

 

 

이전에 생성한 시스템 사용자는 Tomcat 설치 디렉토리에 액세스할 수 있어야 합니다. 디렉토리 소유권을 사용자 및 그룹 Tomcat으로 변경합니다.

sudo chown -R tomcat: /opt/tomcat

 

 

bin 디렉토리 내부의 셸 스크립트를 실행 파일로 만듭니다.

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

 

 

이 스크립트는 Tomcat을 시작하고 중지하는 데 사용됩니다.

 

 

 

Systemd 단위 파일 생성

Tomcat 서버를 수동으로 시작 및 중지하는 대신 서비스로 실행되도록 설정합니다. 텍스트 편집기를 열고 Tomcat을 만듭니다./etc/systemd/system/ 디렉터리에 서비스 단위 파일을 표시합니다.

# /etc/systemd/system/tomcat.service

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

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

[Install]
WantedBy=multi-user.target

 

 

파일을 저장한 후 닫습니다.

다음을 입력하여 systemd에 새 서비스 파일이 있음을 알립니다.

sudo systemctl daemon-reload

 

 

Tomcat 서비스를 사용하도록 설정하고 시작합니다.

sudo systemctl enable --now tomcat

 

 

서비스 상태를 확인합니다.

sudo systemctl status tomcat

# ● tomcat.service - Tomcat 9 servlet container
#    Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
#    Active: active (running) since Wed 2020-01-15 20:38:07 UTC; 30s ago
#   Process: 3957 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
#   ...

 

 

 

방화벽을 구성

서버가 방화벽으로 보호되고 로컬 네트워크 외부에서 Tomcat 인터페이스에 액세스하려면 포트 8080을 열어야 합니다.

다음 명령을 사용하여 필요한 포트를 엽니다.

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload

 

 

일반적으로 운영 환경에서 Tomcat을 실행할 때는 로드 밸런서를 사용하거나 역방향 프록시를 사용해야 합니다. 내부 네트워크에서만 포트 8080에 액세스할 수 있도록 하는 것이 좋습니다.

 

 

 

Tomcat Web Management 인터페이스를 구성

이때 8080 포트에서 웹 브라우저를 사용하여 Tomcat에 액세스할 수 있습니다. 아직 사용자를 만들지 않았기 때문에 웹 관리 인터페이스에 액세스할 수 없습니다.

Tomcat 사용자 및 역할은 Tomcat-users.xml 파일에 정의되어 있습니다.

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

 

파일을 열면 파일 구성 방법에 대한 설명과 예제가 가득합니다.

Tomcat 웹 인터페이스(manager-gui 및 admin-gui)에 액세스할 수 있는 새 사용자를 생성하려면 아래와 같이 파일을 편집합니다. 사용자 이름과 암호를 보다 안전한 것으로 변경하십시오.

# /opt/tomcat/latest/conf/tomcat-users.xml

<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>

 

 

기본적으로 Tomcat 웹 관리 인터페이스는 로컬 호스트에서만 액세스할 수 있도록 구성됩니다.

어디서든 웹 인터페이스에 액세스해야 하는 경우 다음 파일을 열고 노란색으로 강조 표시된 줄을 설명하거나 제거합니다.

# /opt/tomcat/latest/webapps/manager/META-INF/context.xml

<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>

 

# /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml

<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>

 

 

보안상 위험이 있기 때문에 어디서나 액세스를 허용하지 않는 것이 좋습니다.

특정 IP에서만 웹 인터페이스에 액세스하려면 블록에 주석을 추가하는 대신 공용 IP를 목록에 추가합니다.

공용 IP가 41.41.41.41이고 해당 IP에서만 액세스를 허용하려고 한다고 가정합니다.

# /opt/tomcat/latest/webapps/manager/META-INF/context.xml

<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|41.41.41.41" />
</Context>

 

# /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml

<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|41.41.41.41" />
</Context>

 

 

허용되는 IP 주소 목록은 세로 막대 |로 구분된 목록입니다. 단일 IP 주소를 추가하거나 정규식을 사용할 수 있습니다.

완료되면 Tomcat 서비스를 다시 시작하여 변경 내용을 적용합니다.

sudo systemctl restart tomcat

 

 

 

설치를 테스트

브라우저를 열고 http://<your_domain_or_IP_주소:8080입니다.

설치가 완료되면 다음과 유사한 화면이 나타납니다.

Linux : CentOS 8 : Tomcat 9 설치 방법, 예제, 명령어 1

 

 

Tomcat 웹 애플리케이션 관리자 대시보드를 사용하면 애플리케이션을 배포, 배포 취소, 시작, 중지 및 다시 로드할 수 있습니다. http://<your_domain_or_IP_address>:8080/manager/html입니다.

Linux : CentOS 8 : Tomcat 9 설치 방법, 예제, 명령어 2

 

 

Tomcat 가상 호스트 관리자 대시보드를 사용하면 Tomcat 가상 호스트를 생성, 삭제 및 관리할 수 있습니다. http://<your_domain_or_IP_address>:8080/host-manager/html입니다.

Linux : CentOS 8 : Tomcat 9 설치 방법, 예제, 명령어 3

 

반응형