#!/usr/bin/env bash # WAS서버(zio-server / 101.79.17.164)에서 실행 — 웹서버가 Tomcat에 붙을 수 있게 연다. # # 사용법: bash 02-was-expose.sh <웹서버IP> # # 현재 Tomcat은 127.0.0.1:8088 에만 바인딩되어 있어 같은 서버의 nginx만 접근 가능하다. # 별도 웹서버를 두려면 바인딩을 넓히고, 대신 방화벽으로 그 웹서버 IP만 허용한다. # (8088을 전체 공개하면 nginx를 우회해 WAS에 직접 접근할 수 있게 되므로 반드시 IP를 한정한다) set -euo pipefail WEB_IP=${1:-} [ -n "$WEB_IP" ] || { echo "사용법: $0 <웹서버IP>"; exit 1; } echo "$WEB_IP" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' || { echo "IP 형식이 아니다: $WEB_IP"; exit 1; } XML=/opt/arko-dev/tomcat/conf/server.xml TS=$(date +%Y%m%d_%H%M%S) echo "=== 1. server.xml 백업 ===" cp -f "$XML" "$XML.bak_$TS" echo "$XML.bak_$TS" echo echo "=== 2. Tomcat 바인딩 확대 (127.0.0.1 → 0.0.0.0) ===" # address 속성을 제거하면 전체 인터페이스에 바인딩된다. # 노출 통제는 아래 ufw 규칙이 담당한다. sed -i 's|port="8088" protocol="HTTP/1.1" address="127.0.0.1"|port="8088" protocol="HTTP/1.1"|' "$XML" python3 -c "import xml.dom.minidom; xml.dom.minidom.parse('$XML'); print('server.xml XML 검증 OK')" grep -n 'port="8088"' "$XML" | head -2 echo echo "=== 3. 방화벽: $WEB_IP 만 8088 허용 ===" ufw allow from "$WEB_IP" to any port 8088 proto tcp comment "arko-dev WAS <- csv.wise.ai.kr 웹서버" ufw status | grep 8088 echo echo "=== 4. Tomcat 재기동 ===" systemctl restart arko-dev for i in $(seq 1 60); do CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 http://127.0.0.1:8088/ || echo 000) if [ "$CODE" = "200" ] || [ "$CODE" = "302" ]; then break; fi sleep 3 done echo "로컬 확인 → HTTP $CODE" echo echo "=== 5. 리슨 상태 ===" ss -lntp | grep 8088 cat <