Ubuntu에 Tomcat 서버 세팅하기

Seong-Am Kim
7 min readAug 5, 2022

--

현재 기준으로 최신 버전인 10.0.23 Tomcat 서버 세팅을 정리하고자 한다.

Photo by Dmitriy on Unsplash

1. Java 설치

당연한 이야기겠지만 Tomcat 은 자바를 필요로 하므로 이를 설치한다.

$ sudo apt get && sudo apt install default-jdk

2. Tomcat 설치

공식 홈페이지에서 버전을 확인 후 tar 압축 파일의 가장 최신 버전 URL을 가져온다.

우리는 wget을 통해 다운을 받을 것이고 현재 기준으로는 10.0.23 이 가장 최신 버전이므로 해당 URL을 가져온다.

$ wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.23/bin/apache-tomcat-10.0.23.tar.gz

아래 명령어로 다운받은 압축 파일을 풀어준다.

$ sudo tar xzvf apache-tomcat-10.0.23.tar.gz -C /opt/tomcat --strip-components=1

참고) — strip-components 옵션은 경로 중에서 앞에서 일정 갯수의 항목을 제외하고자 할때 쓴다. 위의 예에선 가장 첫번째로 등장하는 디렉토리를 제거하고 압축을 해제 한다.

3. User 생성 및 권한 부여

보안을 위해 Tomcat은 권한이 없는 별도의 사용자로 실행되어야 한ㄷ. 다음 명령어를 통해 tomcat 이라는 사용자를 만들고 로그인을 할 수 없도록 만든다.

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

그리고 아래 명령어를 통해 권한을 부여한다.

$ sudo chown -R tomcat:tomcat /opt/tomcat/ && sudo chmod -R u+x /opt/tomcat/bin

4. 관리자 페이지 설정

관리자 및 호스트 페이지에 접속하려면 Tomcat 구성에서 권한 있는 사용자를 정의해야 한다.

아래 명령어를 통해 해당 경로의 파일을 연다.

$ sudo vim /opt/tomcat/conf/tomcat-users.xml

그리고 해당 파일에 아래 내용을 추가한다.

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

여기서 manager_password 와 admin_password를 자신의 비밀번호로 변경한다.

Tomcat은 기본적으로 서버 자체를 제외한 IP를 제한하도록 하는데 이를 변경 하여 어디서든 접속하려고 하면 다음과 같은 절차를 따른다.

아래 명령어를 통해 해당 경로의 파일을 연다.

$ sudo vim /opt/tomcat/webapps/manager/META-INF/context.xml

다음과 같이 Valve 부분을 주석 처리를 한다.

...
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.Csr>
</Context>

같은 작업을 /opt/tomcat/webapps/host-manager/META-INF/context.xml 도 반복한다.

5. 데몬 생성

Tomcat이 백그라운드에서 돌아가도록 하기 위해 리눅스의 데몬을 생성한다.

우선 설치된 java 버전의 정보를 얻기 위해 아래 명령어를 입력한다.

$ sudo update-java-alternatives -l

강조표시된 정보를 다음을 위해 어딘가 저장해 두고 계속해서 진행한다.

파일 하나를 생성해야 한다 아래 명령어를 통해 편집기를 연다.

$ sudo vim /etc/systemd/system/tomcat.service

다음 내용을 입력한다.

[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target

여기서 Environment=”JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64" 부분을 앞서 얻었던 정보로 변경한다.

작성한 서비스를 systemd에서 인식할 수 있도록 데몬을 다시 로드한다.

$ sudo systemctl daemon-reload

그런 다음 아래 명령어를 통해 서비스를 시작 한다.

$ sudo systemctl start tomcat

만약 재부팅 후에 자동으로 실행하고 싶다면 아래 명령어를 입력한다.

$ sudo systemctl enable tomcat

정상적으로 작동하는지 확인해 보려면 아래 명령어를 입력하면 된다.

$ sudo systemctl status tomcat

--

--