deploy-to-ec2.sh
Ricky/Cat Project Final/deploy-to-ec2.sh
#!/usr/bin/env bash
# Sync PawMatch frontend (Next.js) and backend (Flask) to AWS EC2.
# Usage: from the project root (same directory as this script):
# chmod +x deploy-to-ec2.sh
# ./deploy-to-ec2.sh
#
# Requires: rsync, ssh. Private key default: ./priv_cat.pem next to this script.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REMOTE_USER="${REMOTE_USER:-ubuntu}"
REMOTE_HOST="${REMOTE_HOST:-cat.rickyjuicy.com}"
SSH_KEY="${SSH_KEY:-$SCRIPT_DIR/priv_cat.pem}"
REMOTE_BASE="${REMOTE_BASE:-/home/ubuntu/cat}"
# Local source dirs (repo uses "fp_fixed " with trailing space; fallback without space)
FRONTEND_SRC="${FRONTEND_SRC:-$SCRIPT_DIR/fp_fixed }"
if [[ ! -d "$FRONTEND_SRC" ]]; then
FRONTEND_SRC="$SCRIPT_DIR/fp_fixed"
fi
BACKEND_SRC="${BACKEND_SRC:-$SCRIPT_DIR/back_web-4}"
REMOTE="${REMOTE_USER}@${REMOTE_HOST}"
if [[ ! -f "$SSH_KEY" ]]; then
echo "ERROR: SSH private key not found: $SSH_KEY" >&2
echo "Set SSH_KEY=/path/to/priv_cat.pem or place priv_cat.pem beside this script." >&2
exit 1
fi
if [[ ! -d "$BACKEND_SRC" ]]; then
echo "ERROR: Backend directory not found: $BACKEND_SRC" >&2
exit 1
fi
if [[ ! -d "$FRONTEND_SRC" ]]; then
echo "ERROR: Frontend directory not found: $FRONTEND_SRC" >&2
exit 1
fi
chmod 600 "$SSH_KEY" 2>/dev/null || true
# Safe quoting for rsync -e (paths with spaces)
RSYNC_SSH=(ssh -i "$SSH_KEY" -o StrictHostKeyChecking=accept-new)
RSYNC_EXCLUDES=(
--exclude 'node_modules/'
--exclude '.next/'
--exclude 'venv/'
--exclude '__pycache__/'
--exclude '*.pyc'
--exclude '.git/'
--exclude 'logs/'
--exclude '*.db-journal'
)
echo "==> Remote: ${REMOTE}:${REMOTE_BASE}"
echo "==> Frontend: $FRONTEND_SRC"
echo "==> Backend: $BACKEND_SRC"
echo ""
rsync -avz --delete \
"${RSYNC_EXCLUDES[@]}" \
-e "${RSYNC_SSH[*]}" \
"${FRONTEND_SRC}/" \
"${REMOTE}:${REMOTE_BASE}/frontend/"
rsync -avz --delete \
"${RSYNC_EXCLUDES[@]}" \
-e "${RSYNC_SSH[*]}" \
"${BACKEND_SRC}/" \
"${REMOTE}:${REMOTE_BASE}/backend/"
echo ""
echo "==> Sync finished."
echo ""
echo "IMPORTANT: Do not commit secrets. On the server, ensure you have:"
echo " - ${REMOTE_BASE}/backend/.env (Flask: POE, OpenRouter, JWT, etc.)"
echo " - ${REMOTE_BASE}/frontend/.env.production.local (NEXT_PUBLIC_API_BASE=https://cat.rickyjuicy.com)"
echo ""
echo "Then on EC2: install deps, build frontend, restart services — see DEPLOY_EC2.md"
関連記事
__init__.py
__init__.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/__init__.py).
記事を読む →auth.py
auth.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/admin/auth.py).
記事を読む →routes.py
routes.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/admin/routes.py).
記事を読む →config.py
config.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/config.py).
記事を読む →admin_ingest.py
admin_ingest.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/routes/admin_ingest.py).
記事を読む →admin_stats.py
admin_stats.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/routes/admin_stats.py).
記事を読む →