CentOS7, apache-tomcat9 포트를 80으로 변경하는 방법

이전 글CentOS7에 tomcat 9 설치 이후에, tomcat 기본 포트인 8080포트를 80번으로 아래와 같이 변경하였다.

server.xml 설정

    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />

하지만, tomcat이 80번 포트로 접속되지 않았고, ss 결과 아래처럼 80 포트 listen이 보이지 않는다.

# ss -ant
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port     
LISTEN     0      128          *:22                       *:*
LISTEN     0      100    127.0.0.1:25                       *:*                 
ESTAB      0      208    165.132.237.76:22                 165.132.237.121:10653
LISTEN     0      100         :::8009                    :::*
LISTEN     0      128         :::22                      :::*
LISTEN     0      100        ::1:25                      :::*
LISTEN     0      1         ::ffff:127.0.0.1:8005                    :::*  

이런저런 확인을 해 본 결과, CentOS 7에서 well known port(1-1024)는 root 권한으로만 binding이 가능하게 되었다는 것을 알게 되었다. tomcat을 80 port로 사용하려면, iptables로 포트포워딩을 해서 사용하거나, 데몬을 well known port로 바인딩 가능하도록 authbind를 사용하여야 한다.

아래는 authbind를 이용하여 tomcat을 80 port로 서비스 가능하도록 설정하는 방법이다.

1. authbind 다운로드 및 설치

# curl -O -k https://s3.amazonaws.com/aaronsilber/public/authbind-2.1.1-0.1.x86_64.rpm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17844  100 17844    0     0  15506      0  0:00:01  0:00:01 --:--:-- 15516

# yum install authbind-2.1.1-0.1.x86_64.rpm
Loaded plugins: fastestmirror
Examining authbind-2.1.1-0.1.x86_64.rpm: authbind-2.1.1-0.1.x86_64
Marking authbind-2.1.1-0.1.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package authbind.x86_64 0:2.1.1-0.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package       Arch        Version        Repository                       Size
================================================================================
Installing:
 authbind      x86_64      2.1.1-0.1      /authbind-2.1.1-0.1.x86_64       36 k

Transaction Summary
================================================================================
Install  1 Package

Total size: 36 k
Installed size: 36 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : authbind-2.1.1-0.1.x86_64                                    1/1
  Verifying  : authbind-2.1.1-0.1.x86_64                                    1/1

Installed:
  authbind.x86_64 0:2.1.1-0.1

Complete!

2. authbind 80 번 포트 설정.

80번 포트를 사용할 수 있도록 /etc/authbind 아래 포트번호로 화일을 생성하고, 소유권과 퍼미션을 변경해준다.

# cd /etc/authbind
# ls
byaddr  byport  byuid
# cd byport
# ls
# touch 80
# chmod 500 80
# ls -l
total 0
-r-x------. 1 tomcat root 0 Nov 20 16:29 80

3. tomcat 설정.

이제, tomcat이 설치된 디렉토리의 bin 디렉토리(여기서는 /opt/tomcat/bin)로 이동하여, serene.sh 화일을 아래 내용으로 생성한다.
탐캣 디렉토리에 setenv.sh 화일을 생성한다.

# cd /opt/tomcat/bin
# cat setenv.sh
CATALINA_OPTS="-Djava.net.preferIPv4Stack=true"

startup.sh 화일에서 아래 내용을 바꿔준다. 맨 아래 줄의 내용을 주석처리하고, authbind를 이용하도록 설정한다.

# vi startup.sh
#exec "$PRGDIR"/"$EXECUTABLE" start "$@"
exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"

4. tomcat 재실행하고 listen 포트를 확인한다.

# systemctl restart tomcat

# ss -ant
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port     
LISTEN     0      100          *:8009                     *:*
LISTEN     0      100          *:80                       *:*
LISTEN     0      128          *:22                       *:*
LISTEN     0      100    127.0.0.1:25                       *:*                 
LISTEN     0      1      127.0.0.1:8005                     *:*                 
TIME-WAIT  0      0      165.132.237.76:43953              165.132.237.76:80    
ESTAB      0      208    165.132.237.76:22                 165.132.237.121:10653
TIME-WAIT  0      0      165.132.237.76:49720              165.132.237.76:8009  
LISTEN     0      128         :::22                      :::*
LISTEN     0      100        ::1:25                      :::*

이제, tomcat이 80번 포트로 실행되고 있음을 볼 수 있다.

* 참고문서
https://blog.webhosting.net/how-to-get-tomcat-running-on-centos-7-2-using-privileged-ports-1024/
https://serverfault.com/questions/889122/how-to-get-tomcat-9-to-work-with-authbind-to-bind-to-port-80

답글 남기기

Your email address will not be published.