본문 바로가기

리눅스

Ubuntu에서 Nginx, Zulu OpenJDK, Tomcat을 설치하고 연동하는 방법

728x90

Ubuntu에서 Nginx, Zulu OpenJDK, Tomcat을 설치하고 연동하여 간단한 테스트 페이지를 실행하는 방법

테스트 환경

  • 운영체제 버전 정보
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.1 LTS
Release:	22.04
Codename:	jammy

1. Nginx 설치

2. JDK(JAVA) 설치

3. Tomcat 설치

4. Nginx와 Tomcat 연동 설정

1. Nginx 설치

  • Nginx를 설치합니다.

Nginx repository 등록

echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
apt update

Nginx 패키지 설치(최신 안정화 버전)

apt install -y nginx
nginx -v
systemctl --now enable nginx
curl -I localhost

2. Zulu OpenJDK(java) 설치

  • Zulu OpenJDK를 설치합니다.

Zulu OpenJDK(java) repository 등록

apt-key adv \
  --keyserver hkp://keyserver.ubuntu.com:80 \
  --recv-keys 0xB1998361219BD9C9
curl -sO https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb
apt-get install -y ./zulu-repo_1.0.0-3_all.deb
apt-get update
apt-cache search zulu

Zulu OpenJDK(java) 패키지 설치((openjdk 17 LTS 버전)

sudo apt-get install -y zulu17-jdk
java -version

JDK(java) 환경변수 등록

vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/zulu17
export PATH="$PATH:$JAVA_HOME/bin"
source /etc/profile

3. Tomcat 설치

  • Tomcat을 설치합니다.

작업 디렉터리 생성

mkdir -pv /apps/tomcat

Tomcat 사용자 및 그룹 생성

groupadd tomcat
useradd -s /bin/false -g tomcat -d /apps/tomcat tomcat

Tomcat 10 버전 다운로드

t1

cd /usr/local/src/

Tomcat(apache tomcat 10) 내려받기

wget -q https://downloads.apache.org/tomcat/tomcat-10/v10.1.2/bin/apache-tomcat-10.1.2.tar.gz
tar xfz apache-tomcat-10.1.2.tar.gz -C /apps/tomcat --strip-components=1
chown -R tomcat: /apps/tomcat
chmod +x /apps/tomcat/bin/*.sh
728x90

Tomcat 버전 정보 확인

/apps/tomcat/bin/version.sh

systemd 서비스 파일 생성

vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat webs servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat
RestartSec=10
Restart=always
Environment="JAVA_HOME=/usr/lib/jvm/zulu17"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"

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

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

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl --now enable tomcat
systemctl status tomcat --no-pager -l

브라우저에서 테스트

http://192.168.0.61:8080

t2

4. Nginx와 Tomcat 연동 설정

  • Nginx와 Tomcat을 연동하려면 Nginx 구성 파일을 수정해야 합니다.

Nginx 구성 파일 수정

upstream 설정

upstream tomcat {
        ip_hash;
        server 127.0.0.1:8080 max_fails=10 fail_timeout=1s;
        keepalive 100;
    }
server {
    listen 80;
    server_name localhost;
    root /apps/tomcat/webapps/ROOT;
    index index.jsp;
    charset utf-8;
    location / {
	    proxy_pass http://tomcat;
    }
...
}
cat /etc/nginx/conf.d/default.conf

t3

더보기

---

Nginx가 Tomcat을 프록시 서버로 사용하도록 설정

sudo vim /etc/nginx/sites-available/default
location / {
    proxy_pass http://localhost:8080; # Tomcat이 기본적으로 8080 포트에서 실행됨
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Tomcat 설정

sudo vim /etc/tomcat9/Catalina/localhost/ROOT.xml
<Context path="" docBase="/path/to/your/webapp" />

여기서 /path/to/your/webapp를 실제 웹 애플리케이션의 경로로 대체합니다.

---

5. 테스트 페이지

  • 간단한 테스트 페이지를 생성합니다

index.jsp 편집

vim index.jsp
<%@ page
    language="java"
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
%><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><title>TOMCAT devsp3(Instance1) - TOMCAT TEST</title></head>
<body><pre>
운영체제: <%=System.getProperty("os.arch")%>
데이터모델: <%=System.getProperty("sun.arch.data.model")%>
클래스경로: <%=System.getProperty("java.class.path",".")%>
라이브러리경로: <%=System.getProperty("java.library.path", ".")%>
파라메터: <%=request.getParameter("param")%> ('한글'이라고 표기되어야 함)

파일인코딩: <%=System.getProperty("file.encoding")%>
시스템캐릭터셋: <%=java.nio.charset.Charset.defaultCharset().name()%>
페이지캐릭터셋: <%=response.getCharacterEncoding()%>

서블릿 경로: <%=application.getRealPath("")%>
</pre></body>
</html>

웹 브라우저에서 테스트

http://localhost

t4

이제 웹 브라우저에서 서버의 IP 주소 또는 도메인을 입력하여 테스트 페이지를 확인할 수 있어야 합니다. Nginx를 통해 Tomcat으로 연결되는 웹 페이지를 볼 수 있어야 합니다.

 

이제 Nginx, Zulu OpenJDK, Tomcat을 설치하고 연동하여 간단한 테스트 페이지를 실행하는 방법을 완료했습니다. 필요에 따라 도메인 및 DNS 설정도 고려할 수 있습니다.

 

참고URL

- nginx tomcat 설치 및 연동 : https://scbyun.com/365

- nginx + tomcat(멀티 인스턴스) 설치 : https://scbyun.com/617

- CentOS 6.4 Linux + Apache + Apache Tomcat 연동 : https://scbyun.com/272

- azul docs : https://docs.azul.com/core/zulu-openjdk/install/debian

- Download Azul Zulu Builds of OpenJDK : https://www.azul.com/downloads/?package=jdk#download-openjdk

- Download the Red Hat build of OpenJDK : https://developers.redhat.com/products/openjdk/download

- Java Downloads(oracle) : https://www.oracle.com/java/technologies/downloads

 

728x90