tomcat ¼ºñ½º 80 Æ÷Æ®·Î ¼ºñ½ºÇϱâ
http://ehostidc.co.kr/center/EH050402.php?no=279318&page=5&choose=tit¡¦ (268)https://blog.naver.com/goethe1/221624722718 (330)
tomcat 서비스 80 포트로 서비스하기
- tomcat 의 default 서비스 포트는 8080 인데, 개발 및 서비스의 원인으로 80 포트로 서비스 설정 하는 방법
1. 기존 server.xml 파일 수정
# before
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
# after
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
2. tomcat service 재시작시 오류 발생
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"]
java.net.BindException: Permission denied (Bind failed) <null>:80
3. 원인
- Linux 환경에서 1024 번 이하의 서비스포트에 대해 non-root 계정에서 open 하지 못하도록 구성됨.
4. 해결책
a. setcap 설정
- tomcat 이 아닌 java 에 설정, java 절대 경로 설정
# setcap "cap_net_bind_service=+ep" /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre/bin/java
b. 라이버러리 오류 (의존성 라이브러리 오류)
/usr/lib/jvm/jre/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
c. 의존성 라이브러리 경로 설정
# find / -name libjli.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre/lib/amd64/jli/libjli.so# vi /etc/ld.so.conf.d/java.conf
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre/lib/amd64/jli# ldconfig
d. tomcat start 후 서비스 확인 진행
# iptables »ç¿ë
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
service iptables save
service iptables reload
# firewall »ç¿ë
# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
# firewall-cmd --reload