Ubuntu에 Tomcat 서버 세팅하기
현재 기준으로 최신 버전인 10.0.23 Tomcat 서버 세팅을 정리하고자 한다.
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=forkingUser=tomcat
Group=tomcatEnvironment="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.shRestartSec=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