All checks were successful
deploy-dev / deploy (push) Successful in 31s
Gitea 1.22.3은 workflow_dispatch(수동 실행)와 inputs 컨텍스트를 지원하지 않아 워크플로가 Actions 목록에 표시되지 않았다. 트리거를 push 하나로 단순화한다. 롤백은 서버에서 직접 수행하도록 README에 절차를 남긴다. Tomcat 힙도 768m -> 448m로 낮춘다. 가용 메모리 1G 안팎인 서버에서 Tomcat 재기동 직후 서버 전체가 응답 불능이 된 사례가 두 번 있었다.
58 lines
2.1 KiB
Bash
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
|