arko_renual/deploy/web/02-was-expose.sh
URP2026 62ef19c78f
All checks were successful
deploy-dev / deploy (push) Successful in 31s
Gitea 1.22 호환: 워크플로에서 workflow_dispatch 제거
Gitea 1.22.3은 workflow_dispatch(수동 실행)와 inputs 컨텍스트를 지원하지 않아
워크플로가 Actions 목록에 표시되지 않았다. 트리거를 push 하나로 단순화한다.
롤백은 서버에서 직접 수행하도록 README에 절차를 남긴다.

Tomcat 힙도 768m -> 448m로 낮춘다. 가용 메모리 1G 안팎인 서버에서
Tomcat 재기동 직후 서버 전체가 응답 불능이 된 사례가 두 번 있었다.
2026-07-29 17:03:55 +09:00

58 lines
2.1 KiB
Bash

#!/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 <<EOF
다음: 웹서버에서 도달 확인
curl -s -o /dev/null -w "%{http_code}\\n" -H "Host: csv.wise.ai.kr" http://101.79.17.164:8088/
되돌리려면:
cp -f $XML.bak_$TS $XML && systemctl restart arko-dev
ufw delete allow from $WEB_IP to any port 8088 proto tcp
EOF