#!/usr/bin/env bash # csv.wise.ai.kr 웹 티어 구축 — 웹서버에서 실행 # # 사용법: bash 01-web-server-setup.sh [WAS주소] # WAS주소 기본값 101.79.17.164:8088 (같은 사설망이면 10.0.1.6:8088 로 주면 된다) # # 이 서버는 nginx만 올린다. WAS(Tomcat)와 DB(MariaDB)는 개발서버(101.79.17.164)를 그대로 쓴다. # 멱등: 다시 실행해도 안전하다. set -euo pipefail WAS_ADDR=${1:-101.79.17.164:8088} DOMAIN=csv.wise.ai.kr SRC_DIR=$(cd "$(dirname "$0")" && pwd) log() { echo -e "\n[$(date +'%F %T')] === $* ==="; } # ----------------------------------------------------------- 1. nginx 설치 log "1. nginx 확인" if command -v nginx > /dev/null; then nginx -v 2>&1 else echo "nginx 설치" apt-get update -qq apt-get install -y nginx fi # sites-enabled 구조가 없는 배포판(예: RHEL 계열)이면 만들어 준다 mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled if ! grep -q "sites-enabled" /etc/nginx/nginx.conf; then echo "경고: nginx.conf 가 sites-enabled 를 include 하지 않는다. 수동 확인 필요." fi # ------------------------------------------------- 2. WAS 도달 여부 확인 log "2. WAS 도달 확인 ($WAS_ADDR)" CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 15 -H "Host: $DOMAIN" "http://$WAS_ADDR/" || echo 000) echo "http://$WAS_ADDR/ → HTTP $CODE" if [ "$CODE" = "000" ]; then cat < 를 먼저 실행할 것 (Tomcat 바인딩 확대 + 방화벽에서 이 서버 IP만 8088 허용) - 같은 사설망이면 WAS주소를 10.0.1.6:8088 로 주고 다시 실행할 것 EOF exit 1 fi # --------------------------------------------------------- 3. vhost 배치 log "3. nginx 가상호스트 등록" install -m 644 "$SRC_DIR/$DOMAIN.conf" "/etc/nginx/sites-available/$DOMAIN.conf" # upstream 주소를 인자 값으로 교체 sed -i "s|server 101.79.17.164:8088;|server $WAS_ADDR;|" "/etc/nginx/sites-available/$DOMAIN.conf" grep -n "server .*:8088;" "/etc/nginx/sites-available/$DOMAIN.conf" ln -sfn "/etc/nginx/sites-available/$DOMAIN.conf" "/etc/nginx/sites-enabled/$DOMAIN.conf" if nginx -t; then systemctl reload nginx echo "nginx 반영 완료" else rm -f "/etc/nginx/sites-enabled/$DOMAIN.conf" echo "nginx 설정 오류 → 링크 제거하고 중단" exit 1 fi # ------------------------------------------------------------- 4. 확인 log "4. 프록시 확인" CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 30 -H "Host: $DOMAIN" http://127.0.0.1/ || echo 000) echo "nginx 경유 → HTTP $CODE" curl -s --max-time 30 -H "Host: $DOMAIN" http://127.0.0.1/ | grep -oiE "[^<]*" | head -1 # --------------------------------------------------------------- 5. SSL log "5. SSL" if [ -d "/etc/letsencrypt/live/$DOMAIN" ]; then echo "인증서 이미 존재" else cat <