검증 스크립트
검증 스크립트
아래 스크립트를 서버에 복사·붙여넣기한 뒤 실행하면 자동으로 주요 항목을 점검합니다. 스크립트 상단 변수만 환경에 맞게 수정하세요.
#!/usr/bin/env bash
set -euo pipefail
# === 환경 변수(실제 값으로 변경) ===
SCRIPTS_DIR="/home/ubuntu/maknai-scripts"
WP_PATH="/var/www/maknaiagent"
PLUGIN_SLUG="maknai-auto-post"
NODE_SCRIPT="${SCRIPTS_DIR}/create_post.js"
NODE_LOG="/var/log/maknai_create_post.log"
WPCLI_SCRIPT="/usr/local/bin/maknai_wpcli_post.sh"
WPCLI_LOG="/var/log/maknai_wpcli_post.log"
SYSTEMD_TIMER="maknai-post.timer"
PM2_NAME="maknai-frontend"
# ====================================
echo "=== 1 파일 및 권한 확인 ==="
for f in "$SCRIPTS_DIR" "$NODE_SCRIPT" "$WPCLI_SCRIPT" "$WP_PATH/wp-content/plugins/$PLUGIN_SLUG"; do
if [ -e "$f" ]; then
echo "FOUND: $f"
ls -ld "$f"
else
echo "MISSING: $f"
fi
done
echo
echo "=== 2 로그 파일 상태 ==="
for log in "$NODE_LOG" "$WPCLI_LOG"; do
if [ -f "$log" ]; then
echo "LOG OK: $log (최근 5줄)"
tail -n 5 "$log" || true
else
echo "LOG MISSING: $log"
fi
done
echo
echo "=== 3 Node 의존성 및 실행 확인 ==="
if command -v node >/dev/null 2>&1; then
echo "Node version: $(node -v)"
else
echo "Node not installed"
fi
if [ -f "$NODE_SCRIPT" ]; then
echo "Node 스크립트 문법 체크"
node -c "$NODE_SCRIPT" 2>/dev/null && echo "Node script syntax OK" || echo "Node script syntax check skipped or failed"
fi
echo
echo "=== 4 PM2 및 프로세스 상태 ==="
if command -v pm2 >/dev/null 2>&1; then
pm2 status "$PM2_NAME" || pm2 list | head -n 20
else
echo "PM2 not installed"
fi
echo
echo "=== 5 Apache 및 Certbot 상태 ==="
sudo systemctl is-active apache2 && echo "Apache active" || echo "Apache not active"
if command -v certbot >/dev/null 2>&1; then
sudo certbot certificates || echo "certbot certificates check failed"
else
echo "Certbot not installed"
fi
echo
echo "=== 6 WP-CLI 및 플러그인 활성화 확인 ==="
if command -v wp >/dev/null 2>&1; then
sudo -u www-data wp --path="$WP_PATH" plugin is-active "$PLUGIN_SLUG" && echo "Plugin $PLUGIN_SLUG is active" || echo "Plugin $PLUGIN_SLUG is not active"
sudo -u www-data wp --path="$WP_PATH" core is-installed && echo "WP core installed" || echo "WP core not installed"
else
echo "WP-CLI not installed"
fi
echo
echo "=== 7 systemd timer / cron 확인 ==="
if systemctl list-timers --all | grep -q "$SYSTEMD_TIMER"; then
systemctl status "$SYSTEMD_TIMER" --no-pager
else
echo "systemd timer $SYSTEMD_TIMER not found; checking crontab"
crontab -l 2>/dev/null | grep -E "maknai" || echo "No cron entries found for maknai scripts"
fi
echo
echo "=== 8 간단한 기능 테스트 ==="
# 8.1 웹훅 시크릿 확인
if command -v wp >/dev/null 2>&1; then
SECRET=$(sudo -u www-data wp --path="$WP_PATH" option get maknai_webhook_secret 2>/dev/null || true)
if [ -n "$SECRET" ]; then
echo "Webhook secret exists (length: ${#SECRET})"
else
echo "Webhook secret missing"
fi
fi
# 8.2 WP-CLI 스크립트 실행 시뮬레이션(드라이런)
if [ -x "$WPCLI_SCRIPT" ]; then
echo "WP-CLI script exists and is executable"
else
echo "WP-CLI script missing or not executable"
fi
echo
echo "=== 검증 완료 ==="
검증 항목과 기대 결과
- 파일 존재 및 권한: 스크립트 디렉터리, Node 스크립트, WP-CLI 스크립트, 플러그인 폴더가 존재하고 소유자/권한이 적절해야 함.
- 로그 파일: 로그 파일이 존재하고 최근 로그가 기록되어야 함.
- Node 환경:
node가 설치되어 있고 스크립트 문법에 치명적 오류가 없어야 함. - PM2 상태: 프론트엔드 프로세스가
online상태여야 함. - 웹서버 및 SSL: Apache가 활성화되어 있고 Certbot 인증서가 존재해야 함.
- WP-CLI 및 플러그인: WP-CLI로 플러그인 활성화 여부와 WP 코어 설치 여부 확인.
- 스케줄러: systemd 타이머 또는 crontab에 자동 실행 항목이 있어야 함.
- 웹훅 시크릿: 플러그인 활성화 시 생성된 시크릿이 존재해야 함.
실행 방법
- 스크립트를 서버에 저장:
sudo tee /usr/local/bin/maknai_verify.sh > /dev/null <<'SH'
# (위 스크립트 전체를 여기에 붙여넣기)
SH
sudo chmod +x /usr/local/bin/maknai_verify.sh
- 실행:
sudo /usr/local/bin/maknai_verify.sh
원하시면 제가 발견된 문제를 자동으로 수정하는 복구 스크립트를 생성해 서비스 재시작, 권한 재설정, 플러그인 활성화까지 자동으로 수행하도록 만들어 드립니다.
