웹사이트 검색

Debian 10에서 Nginx 프록시로 Apache Tomcat 9를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 자바 설치
  4. 톰캣 설치
  5. Tomcat용 Systemd 서비스 파일 만들기
  6. Tomcat 웹 인터페이스 구성
  7. Tomcat용 Nginx 구성
  8. Tomcat 웹 UI 액세스
  9. 결론

Tomcat은 Java 기반 애플리케이션을 배포하는 데 사용되는 무료 오픈 소스 경량 애플리케이션 서버입니다. 독립 실행형 서버로 사용하거나 Apache 및 Nginx와 같은 다른 서버와 결합하여 사용할 수 있습니다. Java 서블릿과 상호 작용하는 확장 기능을 제공하고 Java 플랫폼의 여러 기술 사양을 구현합니다. 현재 Tomcat은 Java용으로 가장 널리 사용되는 애플리케이션 서버 중 하나입니다.

이 튜토리얼에서는 Debian 10에서 Nginx와 함께 Tomcat 9를 설치하는 방법을 보여줍니다.

전제 조건

  • Debian 10을 실행하는 서버.\n
  • 서버 IP를 가리키는 유효한 도메인 이름입니다.\n
  • 서버에 루트 암호가 구성되어 있습니다.\n

시작하기

시작하기 전에 APT 캐시를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령을 실행하여 업데이트할 수 있습니다.

apt-get update -y

시스템 패키지 캐시가 최신 상태이면 다음 단계로 진행할 수 있습니다.

자바 설치

Tomcat은 Java 기반 응용 프로그램이므로 서버에 Java가 설치되어 있어야 합니다. 설치되어 있지 않은 경우 다음 명령으로 설치할 수 있습니다.

apt-get install default-jdk -y

Java가 설치되면 다음 명령을 사용하여 Java 버전을 확인할 수 있습니다.

java --version

다음과 같은 결과가 표시되어야 합니다.

openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode, sharing)

완료되면 다음 단계로 진행할 수 있습니다.

톰캣 설치

먼저 Tomcat 서버를 실행할 전용 사용자를 생성해야 합니다. 다음 명령으로 만들 수 있습니다.

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

그런 다음 다음 명령을 사용하여 최신 버전의 Tomcat을 다운로드합니다.

wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일의 압축을 풉니다.

tar -xvzf apache-tomcat-9.0.45.tar.gz

그런 다음 다음 명령을 사용하여 추출된 디렉터리를 /opt로 이동합니다.

mv apache-tomcat-9.0.45 /opt/tomcat/tomcat

그런 다음 다음 명령을 사용하여 적절한 권한과 소유권을 설정합니다.

chown -R tomcat:tomcat /opt/tomcat/tomcat
chmod -R 755 /opt/tomcat/tomcat

완료되면 다음 단계로 진행할 수 있습니다.

Tomcat용 Systemd 서비스 파일 생성

다음으로 Tomcat 서비스를 관리하기 위해 systemd 서비스 파일을 생성해야 합니다. 다음 명령으로 만들 수 있습니다.

nano /etc/systemd/system/tomcat.service

다음 줄을 추가합니다.

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

[Service]
Type=forking

User=tomcat
Group=tomcat

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

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

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

[Install]
WantedBy=multi-user.target

파일을 저장하고 닫은 후 다음 명령을 사용하여 systemd 데몬을 다시 로드합니다.

systemctl daemon-reload

그런 다음 Tomcat 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start tomcat
systemctl enable tomcat

다음 명령을 사용하여 Tomcat의 상태를 확인할 수도 있습니다.

systemctl status tomcat

다음 출력이 표시되어야 합니다.

? tomcat.service - Tomcat 9.0 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-04-14 05:41:21 UTC; 42s ago
  Process: 5784 ExecStart=/opt/tomcat/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5791 (java)
    Tasks: 30 (limit: 4701)
   Memory: 159.1M
   CGroup: /system.slice/tomcat.service
           ??5791 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat/conf/logging.properties -Djava.util.log

Apr 14 05:41:21 debian systemd[1]: Starting Tomcat 9.0 servlet container...
Apr 14 05:41:21 debian startup.sh[5784]: Tomcat started.
Apr 14 05:41:21 debian systemd[1]: Started Tomcat 9.0 servlet container.

완료되면 다음 단계로 진행할 수 있습니다.

Tomcat 웹 인터페이스 구성

다음으로 Tomcat 웹 인터페이스에 액세스할 사용자를 정의해야 합니다. tomcat-users.xml 파일을 사용하여 정의할 수 있습니다.

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

섹션을 찾아 다음 줄을 추가하거나 수정합니다.

  <role rolename="admin-gui"/>
  <role rolename="manager-gui"/>
  <user username="tomcatadmin" password="password" roles="admin-gui,manager-gui"/>

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

기본적으로 Tomcat 웹 인터페이스는 localhost에서만 액세스하도록 구성됩니다. 따라서 외부 액세스용으로 구성해야 합니다.

Manager 앱의 경우 다음 줄을 편집합니다.

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

Host Manager 앱의 경우 다음 파일을 편집합니다.

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

다음 줄을 제거합니다.

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

파일을 저장하고 닫은 다음 Tomcat 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart tomcat

완료되면 다음 단계로 진행할 수 있습니다.

Tomcat용 Nginx 구성

다음으로 Nginx를 Tomcat용 리버스 프록시로 설치 및 구성해야 합니다. 먼저 다음 명령을 사용하여 Nginx 패키지를 설치합니다.

apt-get install nginx -y

Nginx가 설치되면 Tomcat용 새 Nginx 가상 호스트 구성 파일을 생성해야 합니다. 다음 명령을 사용하여 만들 수 있습니다.

nano /etc/nginx/conf.d/tomcat.conf

다음 줄을 추가합니다.

server {
  listen          80;
  server_name     tomcat.example.com;
  root            /opt/tomcat/tomcat/webapps/;


  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/;
  }
}

파일을 저장하고 닫은 다음 Nginx에서 구문 오류가 있는지 확인합니다.

nginx -t

다음 출력이 표시되어야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

그런 다음 Nginx 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart nginx

다음으로 다음 명령을 사용하여 Nginx 서비스의 상태를 확인합니다.

systemctl status nginx

다음 출력이 표시되어야 합니다.

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-04-14 05:57:03 UTC; 1min 38s ago
     Docs: man:nginx(8)
  Process: 6852 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 6853 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 6854 (nginx)
    Tasks: 3 (limit: 4701)
   Memory: 4.0M
   CGroup: /system.slice/nginx.service
           ??6854 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??6855 nginx: worker process
           ??6856 nginx: worker process

Apr 14 05:57:03 debian systemd[1]: Starting A high performance web server and a reverse proxy server...
Apr 14 05:57:03 debian systemd[1]: Started A high performance web server and a reverse proxy server.

이 시점에서 Nginx는 Tomcat에 액세스하도록 구성됩니다. 이제 다음 단계를 진행할 수 있습니다.

Tomcat 웹 UI에 액세스

이제 웹 브라우저를 열고 URL http://tomcat.example.com을 사용하여 Tomcat 웹 UI에 액세스합니다. 다음 페이지가 표시됩니다.

Manager 앱을 클릭하면 다음 페이지가 표시됩니다.

Manager 앱 관리자 사용자 이름과 비밀번호를 제공하고 로그인 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

아래와 같이 호스트 관리자를 클릭하여 호스트 관리자 앱에 액세스할 수도 있습니다.

결론

축하합니다! Debian 10에서 리버스 프록시로 Nginx와 함께 Tomcat을 성공적으로 설치했습니다. 이제 Tomcat을 사용하여 Java 애플리케이션을 쉽게 배포할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.