이 튜토리얼에서는 Ubuntu 20.04에 Tomcat 9를 설치하고 구성하는 방법을 설명합니다.
Apache Tomcat은 오픈 소스 웹 서버 및 Java 서블릿 컨테이너입니다. Java 기반 웹 사이트 및 응용 프로그램을 구축하는 데 가장 많이 사용되는 선택 중 하나입니다. Tomcat은 가볍고 사용하기 쉬우며 강력한 애드온 생태계를 갖추고 있습니다.
Java를 설치
Tomcat 9를 사용하려면 Java SE 8 이상이 시스템에 설치되어 있어야 합니다. 자바 플랫폼의 오픈 소스 구현체인 OpenJDK 11을 설치하겠습니다.
다음 명령을 루트 또는 sudo 권한이나 루트가 있는 사용자로 실행하여 패키지 인덱스를 업데이트하고 OpenJDK 11 JDK 패키지를 설치하십시오.
sudo apt update
sudo apt install openjdk-11-jdk
설치가 완료되면 Java 버전을 확인하여 확인합니다.
출력은 다음과 같아야 합니다.
java -version
# openjdk version "11.0.7" 2020-04-14
# OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
# OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
시스템 사용자 생성
루트 사용자 아래에서 Tomcat을 실행하면 보안 위험이 있습니다. Tomcat 서비스를 실행할 홈 디렉토리 /opt/tomcat을 사용하여 새 시스템 사용자와 그룹을 생성합니다. 이렇게 하려면 다음 명령을 입력합니다.
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Tomcat을 다운로드
Tomcat 이진 배포는 Tomcat 다운로드 페이지에서 다운로드할 수 있습니다.
최신 Tomcat 버전은 9.0.35입니다. 다음 단계를 계속하기 전에 Tomcat 9 다운로드 페이지에서 최신 버전이 있는지 확인하십시오.
wget를 사용하여 Tomcat zip 파일을 /tmp 디렉토리에 다운로드합니다.
VERSION=9.0.35
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 설치 디렉토리에 액세스할 수 있어야 합니다. 디렉토리 소유권을 사용자 및 그룹 Tomcat으로 변경합니다.
sudo chown -R tomcat: /opt/tomcat
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/java-11-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
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
JAVA_를 수정합니다.Java 설치 경로가 다른 경우 HOME 변수를 사용합니다.
파일을 저장한 후 닫고 systemd에 새 장치 파일이 있음을 알립니다.
sudo systemctl daemon-reload
Tomcat 서비스를 사용하도록 설정하고 시작합니다.
sudo systemctl enable --now tomcat
서비스 상태를 확인합니다.
출력에 Tomcat 서버가 활성화되고 실행 중이라는 메시지가 표시됩니다.
sudo systemctl status tomcat
# ● tomcat.service - Tomcat 9 servlet container
# Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
# Active: active (running) since Mon 2020-05-25 17:58:37 UTC; 4s ago
# Process: 5342 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
# Main PID: 5362 (java)
# ...
Tomcat은 다른 systemd 서비스와 동일하게 시작, 중지 및 재시작할 수 있습니다.
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
방화벽을 구성
서버가 방화벽으로 보호되고 로컬 네트워크 외부에서 Tomcat에 액세스하려면 포트 8080을 열어야 합니다.
다음 명령을 사용하여 필요한 포트를 엽니다.
sudo ufw allow 8080/tcp
일반적으로 운영 환경에서 Tomcat을 실행할 때는 로드 밸런서 또는 역방향 프록시를 사용해야 합니다.
내부 네트워크에서만 포트 8080에 액세스할 수 있도록 하는 것이 좋습니다.
Tomcat Web Management 인터페이스를 구성하는 중입니다.
이때 8080 포트에서 웹 브라우저를 사용하여 Tomcat에 액세스할 수 있습니다. 아직 사용자를 만들지 않았기 때문에 웹 관리 인터페이스에 액세스할 수 없습니다.
Tomcat 사용자 및 역할은 Tomcat-users.xml 파일에 정의되어 있습니다. 이 파일은 사용자 또는 역할을 만드는 방법을 보여주는 주석과 예제가 있는 템플릿입니다.
이 예에서는 "admin-gui" 및 "manager-gui" 역할을 가진 사용자를 생성하겠습니다. admin-gui 역할을 통해 사용자는 /host-manager/html URL에 액세스하고 가상 호스트를 생성, 삭제 및 관리할 수 있습니다. manager-gui 역할은 사용자가 /host-manager/html 인터페이스를 통해 전체 컨테이너를 다시 시작하지 않고도 웹 애플리케이션을 배포하거나 배포 취소할 수 있도록 합니다.
아래와 같이 Tomcat-users.xml 파일을 열고 새 사용자를 생성합니다.
# /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>
Copy
Make sure you change the username and password to something more secure.
사용자 이름과 암호를 보다 안전한 것으로 변경하십시오.
기본적으로 Tomcat 웹 관리 인터페이스는 로컬 호스트에서만 Manager 및 호스트 관리자 앱에 액세스할 수 있도록 구성됩니다. 원격 IP에서 웹 인터페이스에 액세스하려면 이러한 제한을 제거해야 합니다. 이는 다양한 보안에 영향을 미칠 수 있으며 프로덕션 시스템에는 권장되지 않습니다.
어디서나 웹 인터페이스에 액세스할 수 있도록 하려면 다음 두 파일을 열고 노란색으로 강조 표시된 줄을 설명하거나 제거하십시오.
Manager 앱의 경우 다음을 수행합니다.
sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
호스트 관리자 앱의 경우 다음을 수행합니다.
sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
# 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에서만 액세스를 허용하려고 한다고 가정합니다.
# 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
Tomcat 설치를 테스트
브라우저를 열고 http://<your_domain_or_IP_주소>:8080입니다.
설치가 성공했다고 가정하면 다음과 유사한 화면이 나타납니다.
Tomcat 웹 응용 프로그램 관리자는 다음 사이트에서 확인할 수 있습니다. http://<your_domain_or_IP_address>:8080/manager/html입니다.
Tomcat 가상 호스트 관리자는 다음 위치에서 사용할 수 있습니다. http://<your_domain_or_IP_address>:8080/host-manager/html입니다.
지금까지 Ubuntu 20.04에 Tomcat 9.0을 설치하는 방법과 Tomcat 관리 인터페이스에 액세스하는 방법을 보여드렸습니다.
Apache Tomcat에 대한 자세한 내용은 공식 설명서 페이지를 참조하십시오.
'SW > 리눅스' 카테고리의 다른 글
Linux : Curl : REST API 요청 방법, 예제, 명령어 (0) | 2022.09.27 |
---|---|
Linux : Ubuntu 20.04 : Yarn 설치 방법, 예제, 명령어 (0) | 2022.09.26 |
Linux : Ubuntu 20.04 : Ruby 설치 방법, 예제, 명령어 (0) | 2022.09.24 |
Linux : Ubuntu 20.04 : Xrdp Server 설치 방법, 예제, 명령어 (원격 데스크톱) (0) | 2022.09.23 |
Linux : Ubuntu 20.04 : Docker 설치 방법, 예제, 명령어 (0) | 2022.09.22 |